亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

A、B兩個操作在需要等一個異步操作完成后操作

A、B兩個操作在需要等一個異步操作完成后操作

楊__羊羊 2019-03-14 14:15:24
A、B兩個操作在需要等一個網絡請求完成后操作,但是可能是A,也可能是B,還可能是AB或者BA,AB兩個操作在不同的js文件中。對于這種情況大家一般怎么處理的呢?謝謝了!ps:請求在微信小程序中,無法添加async: false屬性先謝謝大家的回答了,我之前也是想過promise的。但是這個網絡請求是在app()里面的。這里怎么使用promise就覺得有點沒有頭緒。
查看完整描述

5 回答

?
心有法竹

TA貢獻1866條經驗 獲得超5個贊


簡單粗暴:監聽一段時間(自定義,如20秒)


//兩個請求是否完成的狀態,在每個請求里面回填這個狀態,改成1

var wait = 20, result = { ajax1: 0, ajax2: 0 };

var siFlag = setInterval(function () {

    wait--;

    if (wait < 1) {

        clearInterval(siFlag);

    }

    var isComplete = true;

    for (var i in result) {

        if (!result[i]) {

            isComplete = false;

            break;

        }

    }

    console.log(wait);

    //都完成時

    if (isComplete) {

        console.log("isComplete TODO");


    }

}, 1000);

//直接拷貝到控制臺執行,能看效果,運行的過程中,嘗試改變result對象兩個屬性的值


查看完整回答
反對 回復 2019-03-20
?
翻閱古今

TA貢獻1780條經驗 獲得超5個贊

let in=false

A(){


C()

}

B(){


C()

}

C(){


if(in){

    return

}

in = true

}

其實我也是瞎寫的


查看完整回答
反對 回復 2019-03-20
?
動漫人物

TA貢獻1815條經驗 獲得超10個贊

Promise.all 應該可以


查看完整回答
反對 回復 2019-03-20
?
喵喵時光機

TA貢獻1846條經驗 獲得超7個贊

用Promise并行吧,幾個異步事件一起執行,一起拿到結果,最后完成那個完成了,才獲取所有的異步返回值(集合)


var a = function(){

    return new Promise(function(resolve, reject){

        setTimeout(function(){

            resolve('a');

        },2000);

    })

}

var b = function(){

    return new Promise(function(resolve, reject){

        setTimeout(function(){         

            resolve('b');

        },1000);

    })

}

var c = function(){

    return new Promise(function(resolve, reject){

        setTimeout(function(){

            resolve('c');

        },3000);

    })

}

Promise.all([a(),b(),c()]).then(function(val){

        console.log(val);

})

你如果是只要有請求完成就行,那么用競速,最先完成的完成了就執行,返回最先完成的那個異步的值


Promise.race([a(),b(),c()]).then(function(val){

        console.log(val);

})


查看完整回答
反對 回復 2019-03-20
  • 5 回答
  • 0 關注
  • 682 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號