簡體   English   中英

用JavaScript進行多個異步函數調用的絕佳方式

[英]Elegant way for multiple asynchronous function calls in Javascript

我需要多次調用同一個異步函數,但是直到一次調用完成(即執行回調函數時)。 所以我的代碼看起來像這樣:

syncFunc(a, function() {
    syncFunc(b, function() {
        syncFunc(c, function() {
            syncFunc(.....)
        });
    });
});

現在有可能以某種方式縮短此時間嗎? 我的第一個想法是使用for循環,例如:

syncParams = [a, b, c, ...];
for(var i = 0;; i++) {
    syncFunc(syncParams[i], function() {
        if(i < syncParams.length - 1) {
            alert('finished');
            break;
        } else {
            continue;
        }
    }
}

但是顯然這是行不通的,因為沒有連接繼續和中斷循環。 我的另一個想法是使用間隔檢查每秒是否完成了一個異步調用,然后使用下一個參數調用下一個,但這似乎太復雜了。 有沒有使用某些庫的簡單方法?

編輯 :因為沒有人能理解庫問題:我正在開發PhoneGap移動應用程序,並且我正在使用IDE進行開發,所以加入第三方庫並不是很高興。 我也很好奇這將如何工作。

我看到您想每次使用不同的參數調用該函數。 那么async.forEachSeries將是最合適的。

如果您想每次使用相同的參數調用該函數,則async.whilst會很好地工作。 https://github.com/caolan/async/#whilsttest-fn-callback

@Jack提到了這個問題,您可以自己做一個很好的答案: 如何同步JavaScript回調?

暫無
暫無

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

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