2 回答

TA貢獻1810條經驗 獲得超5個贊
async/await 不是唯一的解決方案。無論如何,您都需要在 functionOne 中創建一個承諾
/*async*/ function functionOne(){
var s;
var p = new Promise(function(success) {
chrome.storage.local.get(['prm'], function(result) {
s = result.prm;
success(s);
});
}
return p;
}
function functionTwo(){
let p = functionOne();
p.then(function(s) {
//...
});
}
您需要創建一個承諾才能返回 chrome.log.storage 的結果。您可以使 functionOne 異步或不異步。它不會改變任何東西。

TA貢獻1909條經驗 獲得超7個贊
您將不得不使用一個不能同時工作的異步函數。你可以做類似的事情
function functionOne(){
var s
chrome.storage.local.get(['prm'], function(result) {
s = result.prm;
return s;
});
}
async function functionTwo(){
await let w = functionOne();
// second half runs after w is assigned a value (after functionOne is done running).
}
從這里引用: https: //developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function
注意:我還想指出,functionOne 實際上返回一個未定義的值,因為在 chrome.storage.local.get 函數內部回調返回 s,因此您需要將 return 語句移到回調函數之外。
添加回答
舉報