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 语句移到回调函数之外。
添加回答
举报