替代jquery的时候

时间:2017-02-11 02:51:45

标签: javascript jquery asynchronous request

我知道我们可以像axios一样使用基于promise的http客户端来使用像这样的api

axios(url).then(success, error)

但如果我想同时发送2个a​​jax请求,我仍然需要恢复使用jquery的$ .when

$.when(promise1, promise2).then(success, error)

如果我不想使用像jquery这样繁重的库并使用一些轻量级的库,那么$ .when的替代方法是什么。

3 个答案:

答案 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〜