javascript - 等到一个函数完成后再执行第二个 JS
问题描述
我在使用第二个功能时遇到问题。它在'w'中保存一个值之前运行。我试过 setTimout() 但它没有帮助。我正在尝试实现 async/await,但我正在为它如何与下面的代码匹配而苦苦挣扎:
function functionOne(){
var s
chrome.storage.local.get(['prm'], function(result) {
s = result.prm;
return s;
});
}
function functionTwo(){
let w = functionOne();
// second half runs after w is assigned a value (after functionOne is done running).
}
async/await 是唯一的解决方案还是有另一种解决方法?
解决方案
您将不得不使用不能同时工作的异步函数。你可以做类似的事情
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 语句移到回调函数之外。
推荐阅读
- javascript - 数据路径“”不应具有附加属性(版本)角度 6
- python - 如何合并列表但用新行分开?
- python - 通过 savetxt 保存 NumPy 直方图时显示 bin 最小和最大范围
- pipe - Julia - 替代 readandwrite()
- swift - 过滤 UIDocumentInteractionController 建议的应用
- sql - 在 hive 中,如果 A 不为空,如何选择 A,否则选择 B。A 和 B 都是 json 列中的字段
- r - 如何根据另一个变量为一个变量创建条件值
- amazon-dynamodb - 如何将 AWS Cognito 用户池用户存储在数据库(例如 DynamoDB)中?
- amazon-web-services - 通过 SSH 连接到 Amazon EKS EC2 实例以执行管理任务
- java - Android - 如何在以编程方式创建的表行内对齐视图