我正在尝试进行Promise链接,但是以某种方式使用chrome.storage.sync.get
进行异步调用总是会在以后返回。我认为这应该是正确的顺序:
chrome.storage.sync
我已经尝试在2)步骤中添加新的Promise,但没有成功。
console.log
总是以错误的顺序返回。像这样:
这是我的尝试:
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
的结果,因为我需要处理其他内容,而不要使回调变得太复杂
答案 0 :(得分:0)
由于注意到了这个问题,我找到了一个解决方案,方法是更改第一个.then
的位置,显式地解决chrome.storage.sync.get
的结果,而不是整个问题。
pr
.then( () => {
return new Promise( resolve => {
return chrome.storage.sync.get(["code", "isAutocheck"], result => {
console.log('result async: ', result );
return resolve(result)
});
});
})
.then(...);