首页 > 解决方案 > 等到一个函数完成后再执行第二个 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 是唯一的解决方案还是有另一种解决方法?

标签: javascriptgoogle-chrome-extension

解决方案


您将不得不使用不能同时工作的异步函数。你可以做类似的事情

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 语句移到回调函数之外。


推荐阅读