簡體   English   中英

如何等待回調函數完成?

[英]How to await callback function to finished?

我有兩個簡單的函數:一個返回promise函數

function showBootbox(){
   return new Promise(function (resolve, reject) {
       bootbox.confirm('Are you sure ? ',resolve);
   });  
}

和一個使用callback的函數。

function getBootboxValue(callback) {
   showBootbox().then(function (result) {
      callback(result);
   });
}

現在的問題是我不能等待回調完成。

if(condition){
  getBootboxValue(function(result){
    if(result){
       //code
    }
  });
}
console.log('a');

在我得到諾言的結果之前, console.log(a)正在執行。 如何不使用async/await機制來做到這一點?

提前致謝!

如果我沒弄錯了,你的想法是console.log('a') immidiately如果條件沒有被滿足, console.log('a')如果滿足條件,在回調結束。

如果是這樣,一種選擇可能是在滿足條件時返回getBootboxValue(callback)的諾言,而在getBootboxValue(callback)條件時返回已經實現的諾言。 然后,您應使用一個包含console.log('a')承諾的回調。

 function showBootbox() { return new Promise(function(resolve, reject) { console.log('Are you sure ? '); resolve(); }); } function getBootboxValue(callback) { return showBootbox().then(function(result) { callback(result); }); } function test(condition) { var cbk = function(result) { console.log('Launching callback'); if (result) { //code } }, aux = condition ? getBootboxValue(cbk) : Promise.resolve(null); aux.then(function() { console.log('a') }); } test(true); test(false); 

希望能幫助到你。

我想這就是你所追求的。 如果您需要有條件地執行異步函數,然后運行其他代碼,則無論如何都要運行該代碼,您可以將代碼放入函數中,並在兩種情況下調用它:

if(condition){
  getBootboxValue(function(result){
    if(result){
       //code
    }
    doSomething();
  });
} else {
  doSomething();
}
function doSomething() {
  console.log('a');
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM