jQuery 1.9+ .Ajax()新的Promise接口优点

5个新的JQUERY.AJAX()示例JQUERY 1.9+之后 ,我想记录一下对jQuery .Ajax()1.9+使用promise接口的更改(有些可以归类为优点)。

  • 命名 –显然,名称已从成功->完成,错误->失败,完成->始终更改。
  • 延期 –延期承诺可以绑定到应用程序中的任何位置,从而具有灵活性和可重用性。
  • 回调顺序 –按此顺序调用:1个失败,2个完成,3个始终。 标准。
  • Mutiples –您可以指定任意数量的相同类型的回调。 即.always()、. always()、. always()一旦ajax请求返回完成,它们都将被触发。
  • 争论
  • 链接 –从jQuery 1.8开始,您可以使用.then()函数链接ajax调用。 参见以下示例。
  • 合并 –您可以将.done()和.error()合并为.then()。 参见以下示例。
//old complete function
complete Function( jqXHR jqXHR, String textStatus )

//new done function
jqXHR.done(function(data, textStatus, jqXHR) {});

资料来源: jQuery.Ajax API

如果您发现我想念的更多内容,请随时发表评论。

将.done()和.fail()合并为.then()

您可以将done()和fail()函数合并为一个then()函数。 上面的代码可以重写为:

var promise = $.ajax({
  url: "/myServerScript"});
 
promise.then(mySuccessFunction, myErrorFunction);

资料来源: jQuery中的Deferred和Promise

链接Ajax请求

从jQuery 1.8开始,您可以顺序地链接then()函数。 在下面的代码中,首先运行promise1,成功解决后,运行getStuff,返回一个promise,当成功解决后,将执行匿名函数。

var promise1 = $.ajax("/myServerScript1");
 
function getStuff() {
    return $.ajax("/myServerScript2");}
 
promise1.then(getStuff).then(function(myServerScript2Data){
  // Both promises are resolved});
Every callback function receives the result of the previous asynchronous function, in the case of Ajax, that would be the returned data.

使用.when()作为Promise

您可以使用.when()分配承诺回调函数,即.done()。

var container = $("#mycontainer");
$.when(
    function () {
        return $.Deferred(function (dfd) {
            container.fadeOut('slow', dfd.resolve);
        }).promise();
    }(),
    $.ajax({
        url: 'Path/To/My/Url/1',
        type: 'POST',
        dataType: 'json'
    }),
    $.ajax({
        url: 'Path/To/My/Url/2',
        type: 'POST',
        dataType: 'json'
    })
).done(function (x, data) {
    container.html('Your request has been processed!');
    container.fadeIn('slow');
});

如您所见,我们将$ .when传递给三个承诺,一个用于淡出动画,另一个用于ajax操作。

*第一个参数是一个自执行的匿名函数,该函数创建延迟的处理程序并返回Promise。 在$ .Deferred的回调中,将dfd.resolve函数传递到fadeOut()的回调参数中,这意味着一旦动画完成,将解决延迟问题。
*关于其他两个参数,我们将传递给$ .when,因为$ .ajax的结果是一个实现Promise的jqXHR对象,我们只传递按原样返回的值。

资料来源: 永远遵守您的(jQuery)承诺

From: https://www.sitepoint.com/jquery-1-9-ajax-promise-interface-advantages/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值