【发布时间】:2018-02-21 20:19:23
【问题描述】:
我从 Axios AJAX 库中获取了这个示例,但 Promises.all() 也是如此。
到目前为止,我已阅读您可以使用Promises.all() 检查是否已解决来自一组承诺的所有承诺。
这确实很简洁,但是如果你推送一个承诺并且它在下一个被推送之前解决,会发生什么?
我猜我的平均 AJAX 调用开销至少为 50 毫秒,推送总是发生在任何 ajax 请求之前,但只是说理所当然的感觉并不正确。
我可以想到两种解决方案:
使用计数来确保两个(在这种情况下)AJAX 请求都在
数组。检查实际的函数名称。
其他人是如何处理这个问题的,或者大多数人只是满足于希望两个 AJAX 请求都被推送,然后一个请求能够足够快地得到解决。
axios.all([getUserAccount(), getUserPermissions()])
.then(axios.spread(function (acct, perms) {
// Both requests are now complete
}));
【问题讨论】:
-
不太清楚你在问什么。您是否在动态构建承诺数组?或者您想知道请求是否会在打包之前以某种方式完成?
-
是的,这些承诺是从多个地方推送的。假设已经推送了一个promise,而我希望有2个promise,那么理论上这个单一promise可能会在第二个promise被推送之前触发一个then?如果是这种情况,是否需要一种机制来事先检查?
-
您不需要事先检查这一点的机制。
Promise.all从一系列承诺中做出一个承诺。你是什么意思他们被从不同的地方推过来
标签: javascript ajax promise axios