第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

如何同步一系列承諾?

如何同步一系列承諾?

繁星coding 2019-07-11 20:55:29
如何同步一系列承諾?我有一個承諾對象數(shù)組,這些對象必須按照數(shù)組中列出的相同順序進行解析,也就是說,在解析完前一個元素(作為方法)之前,我們不能嘗試解析一個元素。Promise.all([...]))。如果一個元素被拒絕,我需要鏈立即拒絕,而不試圖解析以下元素。我如何實現(xiàn)這一點,或者是否存在這樣的現(xiàn)有實現(xiàn)?sequence模式?function sequence(arr) {     return new Promise(function (resolve, reject) {         // try resolving all elements in 'arr',         // but strictly one after another;     });}編輯最初的答案表明我們只能sequence這種數(shù)組元素的結果,而不是它們的執(zhí)行,因為它是在這樣的示例中預先定義的。但是,如何產(chǎn)生一系列的承諾,以避免早期執(zhí)行呢?下面是一個修改過的示例:function sequence(nextPromise) {     // while nextPromise() creates and returns another promise,     // continue resolving it;}我不想把它變成一個單獨的問題,因為我認為這是同一個問題的一部分。解下面的一些答案和隨后的討論有點誤入歧途,但最終的解決方案,正是我所尋求的,是在內部實現(xiàn)的。斯皮克斯圖書館,作為方法序列..該方法可以遍歷動態(tài)長度序列,并根據(jù)應用程序的業(yè)務邏輯創(chuàng)建承諾。后來,我把它變成了一個共享庫,供大家使用。
查看完整描述

3 回答

?
波斯汪

TA貢獻1811條經(jīng)驗 獲得超4個贊

承諾代表價值而不是行動本身。操作是已經(jīng)開始所以你不能讓他們彼此等待。

相反,您可以同步返回承諾的函數(shù)按順序調用它們(例如通過具有承諾鏈的循環(huán)),或使用.each方法在藍知更鳥。


查看完整回答
反對 回復 2019-07-11
?
Smart貓小萌

TA貢獻1911條經(jīng)驗 獲得超7個贊

不能簡單地運行X異步操作,然后按順序解析它們。

這樣做的正確方法是,只有在解決之前的一個異步操作之后才運行新的異步操作:

doSomethingAsync().then(function(){
   doSomethingAsync2().then(function(){
       doSomethingAsync3();
       .......
   });});

編輯
似乎您希望等待所有的承諾,然后以特定的順序調用它們的回調。就像這樣:

var callbackArr = [];var promiseArr = [];promiseArr.push(doSomethingAsync());
callbackArr.push(doSomethingAsyncCallback);promiseArr.push(doSomethingAsync1());
callbackArr.push(doSomethingAsync1Callback);.........promiseArr.push(doSomethingAsyncN());
callbackArr.push(doSomethingAsyncNCallback);

然后:

$.when(promiseArr).done(function(promise){
    while(callbackArr.length > 0)
    {
       callbackArr.pop()(promise);
    }});

當一個或多個承諾失敗時,就會出現(xiàn)這樣的問題。


查看完整回答
反對 回復 2019-07-11
  • 3 回答
  • 0 關注
  • 513 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號