簡體   English   中英

我如何在javascript中先調用函數然后再調用第二個函數

[英]How do i call a function first and then the second in javascript

我想打電話給checkifPresentInActiveProjLib第一和后功能checkifPresentInClosedProjLib function.How我實現這一點?

checkifPresentInActiveProjLib(function(flgAc) {
    if (flgAc === "active_found")
        // do something

    $.ajax(...); // ajax call
});

checkifPresentInClosedProjLib(function(flgCl) {
    if (flgCl === "closed_found")
        // do something

    $.ajax(...); // ajax call
});

只需使用Promise即可處理異步事件。 您需要修改checkifPresentInActiveProjLib以返回諾言,在這種情況下,您的諾言是$.ajax(...); 所以你確實return $.ajax(...); 然后只需按以下方式調用下一個func:

 checkifPresentInActiveProjLib(...)
.then(function() { 
      checkifPresentInClosedProjLib(args)
})

您可以使用javascript Promise對象

  function  checkifPresentInActiveProjLib(flgAc) {
    if (flgAc === "active_found")
        alert('active_found');
};

function checkifPresentInClosedProjLib(flgCl) {
    if (flgCl === "closed_found")
        alert('closed_found');
};

function makeAjaxCall(){
   var promiseObj = new Promise(function(resolve, reject){
         resolve(checkifPresentInActiveProjLib());
   });
 return promiseObj;
}

 makeAjaxCall().then(checkifPresentInClosedProjLib());

這兩個函數中都有異步ajax調用。 如果要在第一個函數完成后調用第二個函數,則需要等待第一個函數完成。

您可以通過在第一個函數的ajax函數部分的response部分中調用第二個函數來簡單地做到這一點。

checkifPresentInActiveProjLib(function(flgAc) {
    if (flgAc === "active_found")
        // do something

    $.ajax(...).done(function( data ) {
    // call second function here
  }););
});

或者您可以使用諾言:

checkifPresentInActiveProjLib(function (flgAc) {
    return new Promise(function (resolve, reject) {
        if (flgAc === 'active_found')
        // do something
        $.ajax(...)
                .done(function (data) {
                  if (data) resolve(data);
                })
                .fail(function (err) {
                  reject(err);
                });
    });
});

然后調用函數為:

checkifPresentInActiveProjLib(...).then(data => checkifPresentInClosedProjLib(...)

暫無
暫無

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

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