Skip to content

如何并列返回ajax请求结果 #57

@wenbingyan

Description

@wenbingyan

如果由多个ajax请求,怎么样保证返回结果按顺序返回呢。

首先可以将所有的ajax请求变成同步。

async:false

这样请求顺序就和返回顺序一致了。
但是在真实的业务场景中,同步的ajax显然不太合理。

这里可以用es6中的promise.all()。来实现了

const getRandom = () => +(Math.random()*1000).toFixed(0);

const asyncTask = taskID => new Promise(resolve => {
    let timeout = getRandom();
    console.log(`taskID=${taskID} start.`);
    setTimeout(function() {
        console.log(`taskID=${taskID} finished in time=${timeout}.`);
        resolve(taskID)
    }, timeout);
});

Promise.all([asyncTask(1),asyncTask(2),asyncTask(3)])
.then(resultList => {
    console.log('results:',resultList);
});
//请求顺序可以有所不同,但返回顺序是固定的   result:[ 1,2,3 ]

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions