Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/477.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何保证es6中的所有退货订单_Javascript_Ecmascript 6_Promise_Axios - Fatal编程技术网

Javascript 如何保证es6中的所有退货订单

Javascript 如何保证es6中的所有退货订单,javascript,ecmascript-6,promise,axios,Javascript,Ecmascript 6,Promise,Axios,我正在使用ES6JavaScript,并根据返回顺序进行API调用。http客户端是Axios。一位同事指示我使用Promise.all()。它工作正常,我知道它肯定会,但我不确定如何才能保证结果正常。我的理解是,异步请求不能得到保证!我的简化代码是: Promise.all([ axios.get('/cars'), axios.get('/road-conditions') ]).then(values => { this.cars = values[0]

我正在使用ES6JavaScript,并根据返回顺序进行API调用。http客户端是Axios。一位同事指示我使用
Promise.all()
。它工作正常,我知道它肯定会,但我不确定如何才能保证结果正常。我的理解是,异步请求不能得到保证!我的简化代码是:

Promise.all([
    axios.get('/cars'),
    axios.get('/road-conditions')
]).then(values => {

    this.cars = values[0]
    this.roadConditions = values[1]

})

我想了解
值如何知道哪个请求是哪个请求。这是Axios的一项特殊功能吗?

没有什么好办法:
Promise。所有的
都只记得Promise的索引,并将该Promise的结果保存到它构建的阵列中的正确插槽中。它不只是使用
push
来构建阵列(因为那样确实会很混乱)

下面是一个这样做的示例,向您大致展示了封面下发生的事情:

函数随机延迟(val){
返回新承诺(解决=>{
设置超时(
决定
Math.random()*1000,
瓦尔
);
});
}
//见:https://tc39.es/ecma262/#sec-表演表演
函数fakeAll(iterable){
返回新承诺((解决、拒绝)=>{
常量值=[];
设remainingElementsCount=1;
设指数=0;
for(iterable的常量值){
const thisIndex=index;//记住此结果的索引
resolve(value)//处理表和原始值
.然后(val=>{
log(`values[${thisIndex}]=${JSON.stringify(val)}`);
值[thisIndex]=val;//{
控制台日志(结果);
})
.catch(错误=>{
控制台错误(error);
});
。作为控制台包装器{
最大高度:100%!重要;

}
承诺。所有
按照与您传递给它的承诺数组相同的顺序提供解析值。这里不保证的是请求到达服务器的顺序。感谢您的响应,我确实理解数组中的顺序是受尊重的,我只是不清楚承诺如何保证顺序。承诺。所有等待数组中的所有承诺都已兑现,然后才能兑现。因此,无论收到的顺序如何,您都会按照指定的顺序得到答案。我明白了,谢谢您的解释。