[关闭]
@xiaoyixy 2015-12-08T23:00:19.000000Z 字数 1416 阅读 1561

延迟对象模式状态函数

Hybrid


1 注册回调完成 deferred.done()
    .done() 函数允许一个回调函数与延迟对象寄存在一起,且一旦 .resolve() 函数被延迟对象调用完成时,这个回调函数就会被调用。

    deferred.done(function(data) {
    console.log("Success callback: " + data);
    });

2 注册回调失败 deferred.fail()
    如果由于某种错误导致调用请求失败且  .reject() 函数被调用,.fail() 函数允许准备被回调的回调函数的寄存行为。这个函数能提供描述错误的恰当错误提示。

    deferred.fail(function(errCode, errMsg) {
    console.log("Failure callback: " + errCode + " - " + errMsg);
    });

3 注册进程回调 deferred.progress()
    .progress() 函数提供了更新请求进度的选项。这个回调函数在请求的生命周期内被多次调用的同时 .notify() 函数在延迟对象中被调用。相反地,.done() 和 .fail() 回调只在请求的生命周期内被执行一次。

    deferred.progress(function(percentage) {
    console.log("Progress callback: " + percentage);
    });

4 简单的回调注册 .then()
    .then() 函数提供了一种在同一个地方实现区分成功、失败和进度回调函数的简便方式。所有的回调参数都是任意的,这允许开发者凭兴趣对某个函数进行回调声明。.then() 在.resolve() 或 .reject() 函数在延迟对象中被调用时终止生命周期。
    deferred.then() 的函数结构如下:
    deferred.then(successCallback, failCallback, progressCallback);

整合以上的四个回调函数,可以实现和下面代码实现的效果等同:

    deferred.then(function() {
    console.log("Success callback");
    }, function(errCode, errMsg) {
    console.log("Failure callback: " + errCode + " - " + errMsg);
    }, function() {
    console.log("Progress callback");
    });

5 实现多个异步事件 $.when()
    你可以使用 $.when() 协助函数实现同步一个或者多个事件。$.when() 函数等待等待所有要执行的任务,一旦延迟事件执行完成,将由事件执行的结果(成功或者失败)决定 .then() 或 .fail() 回调哪一个被终止。如果有一个任务执行失败, .fail() 就会被调用。

    function doThis() {
    return $.get('this.html');
        }
        function doThat() {
        return $.get('that.html');
        }
        $.when(doThis(), doThat()).then(function(data) {
    console.log("Both events are successful.");
    }).fail(function(errCode, errMsg) {
    console.log("One or more events are failed.");
    });
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注