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

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

如何在Javascript中用Q順序運(yùn)行promises?

如何在Javascript中用Q順序運(yùn)行promises?

有只小跳蛙 2019-08-23 09:49:02
如何在Javascript中用Q順序運(yùn)行promises?我很難順序運(yùn)行promises。var getDelayedString = function(string) {     var deferred = Q.defer();     setTimeout(function() {         document.write(string+" ");         deferred.resolve();     }, 500);     return deferred.promise;};var onceUponATime = function() {     var strings = ["Once", "upon", "a", "time"];     var promiseFuncs = [];     strings.forEach(function(str) {         promiseFuncs.push(getDelayedString(str));     });     //return promiseFuncs.reduce(Q.when, Q());     return promiseFuncs.reduce(function (soFar, f) {         return soFar.then(f);     }, Q());    };getDelayedString("Hello").then(function() {     return getDelayedString("world!")}).then(function() {     return onceUponATime();}).then(function() {     return getDelayedString("there was a guy and then he fell.")}).then(function() {     return getDelayedString("The End!")})onceUponATime()應(yīng)該按順序輸出[“Once”,“on”,“a”,“time”],但是由于某種原因它們會立即輸出。jsFiddle這里:http://jsfiddle.net/6Du42/2/知道我做錯了什么嗎?
查看完整描述

1 回答

?
qq_遁去的一_1

TA貢獻(xiàn)1725條經(jīng)驗(yàn) 獲得超8個(gè)贊

但相反,由于某種原因,它們會立即輸出。

你在這里打電話給他們:

promiseFuncs.push(getDelayedString(str));//                                ^^^^^

你需要推動function(){ return getDelayedString(str); }。順便說一句,而不是使用推送到each循環(huán)中的數(shù)組,你應(yīng)該使用map。實(shí)際上你并不是真的需要它,但可以直接reducestrings陣列上:

function onceUponATime() {
    var strings = ["Once", "upon", "a", "time"];

    return strings.reduce(function (soFar, s) {
        return soFar.then(function() {
            return getDelayedString(s);
        });
    }, Q());    }

哦,不要用document.write。


查看完整回答
反對 回復(fù) 2019-08-23
  • 1 回答
  • 0 關(guān)注
  • 273 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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