使用Promise.all([a(),b()]).then(c())无法保证a()和b()中的

异步获取两个数据,并在执行完后更新前台渲染,但现在数据还没获取到最后的函数已经执行,代码如下


function a(e) {

    if (e) {

        $.ajax({

            url: '../../a.ashx',

            data: { },

            type: 'get',

            success: function (data) {

                console.log(a);

            }

        })

    } else {

    }

}

function b(e) {

    if (e) {

        $.ajax({

            url: '../../b.ashx',

            data: {},

            type: 'get',

            success: function (data) {

                console.log(b);

            }

        })

    } else {

    }

}

function c(){

    console.log(1);

}

Promise.all([GetTimes(), GetPackage()]).then(c());

执行结果类似这样:


1

a

b

求解。


HUX布斯
浏览 342回答 1
1回答

蓝山帝景

function a() {    return new Promise(res,rej){        if(e) {            $.ajax({                url: '../../a.ashx',                data: { },                type: 'get',                success: function (data) {                    res(data)                }            })        }    }}function b() {    return new Promise(res,rej){        if(e) {            $.ajax({                url: '../../b.ashx',                data: { },                type: 'get',                success: function (data) {                    res(data)                }            })        }    }}function c(){    console.log(1);}Promise.all([a(), b()]).then(c());
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript