【发布时间】:2019-10-12 17:41:39
【问题描述】:
我正在尝试进行承诺链接,但不知何故,使用chrome.storage.sync.get 的异步调用总是稍后返回。这是我认为应该是正确的顺序:
- 创建一个元素并附加到正文
- 致电
chrome.storage.sync - 根据 2) 结果,在 1) 中创建的元素上触发一些事件
我已经尝试将新的 Promise 放入 2) 步骤,但没有成功。
console.log 总是以错误的顺序返回。比如:
- // insertCheckbox 完成
- //启动promise chrome.storage.sync
- //未定义
- // 结果 asnyc: ...
这是我的尝试:
const pr = new Promise(resolve => {
this.createCheckbox();
console.log('insertChecbox done')
resolve();
});
pr
.then( resolve => {
console.log("start promise chrome.storage.sync");
return new Promise( resolve => {
return resolve(chrome.storage.sync.get(["code", "isAutocheck"], result => {
console.log('result async: ', result );
return result
}));
});
})
.then( result => {
console.log(result);
console.log('This always run before the `chrome.storage.sync` finishes loading`)
if (result.isAutocheck) {
const domCheckbox = this.getCheckboxElement();
domCheckbox && domCheckbox.click();
}
});
我想分离 chrome.storage.sync 的结果,因为我需要处理其他事情,而不是让这个回调太复杂
【问题讨论】:
标签: javascript asynchronous promise chaining