Я пытаюсь создать цепочку обещаний, но каким-то образом асинхронный вызов с использованием chrome.storage.sync.get
всегда возвращается позже. Вот правильный порядок, я думал, что это должно быть:
- Создать элемент и добавить к телу
- Звоните
chrome.storage.sync
- На основе 2) результата, вызвать какое-либо событие для элемента, созданного в 1)
Я уже пытался поместить новое Обещание в 2) шаг, но безуспешно.
console.log
всегда возвращается в неправильном порядке. Что-то вроде:
- // insertChecbox done
- // начать обещание chrome.storage.sync
- // undefined
- // результат 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
, потому что мне нужно работать над другими вещами, не делая этот обратный вызов слишком сложным