我知道我们可以像axios一样使用基于promise的http客户端来使用像这样的api
axios(url).then(success, error)
但如果我想同时发送2个ajax请求,我仍然需要恢复使用jquery的$ .when
$.when(promise1, promise2).then(success, error)
如果我不想使用像jquery这样繁重的库并使用一些轻量级的库,那么$ .when的替代方法是什么。
答案 0 :(得分:1)
使用$ Q库:https://github.com/kriskowal/q
为了您的目的,您可以使用$Q.all
答案 1 :(得分:1)
您可以使用Promise.all()
Promise.all([promise1, promise2]).then(success, error);
答案 2 :(得分:0)
正如我们的朋友Rikin所说,使用Q库绝对是一个不错的选择。如果任何请求参数失败,jQuery.when()不会继续请求。
Q有方法可以实现这一点。看,假设您有fn1和fn3,它为您提供HTTP 200,fn2返回HTTP 404,使用此方法Q.allSettled
它将完美运行。
Q.allSettled([fn1(), fn2(), fn3()])
.then(function(f1Result, f2Result, f3Result) {
// your code that will run every time...
});
如果您需要在网络项目中使用它,请按照以下步骤操作(您需要在计算机中安装npm):
1)转到https://github.com/kriskowal/q并克隆/下载回购。
2)然后到您克隆回购的文件夹并运行npm install
。
3)最后,npm run minify
。它将生成q.min.js,您可以在项目中使用。
有关详情,请参阅Q wiki参考:https://github.com/kriskowal/q/wiki/API-Reference
Cheeers〜