亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

等到第一個函數完成后再執行第二個 JS

等到第一個函數完成后再執行第二個 JS

慕田峪7331174 2023-11-02 22:55:07
我在使用第二個功能時遇到問題。它在“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 是唯一的解決方案還是有其他方法來解決它?
查看完整描述

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 異步或不異步。它不會改變任何東西。


查看完整回答
反對 回復 2023-11-02
?
jeck貓

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 語句移到回調函數之外。


查看完整回答
反對 回復 2023-11-02
  • 2 回答
  • 0 關注
  • 137 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號