jQuery deferred.promise() 方法

返回上一级

jQuery deferred.promise() 函数返回 Deferred(延迟)的 Promise 对象

语法

deferred.promise( [target ] )

参数

参数 描述
target Object类型 绑定 promise 方法的对象

说明

  1. 方法允许一个异步函数阻止那些干涉其内部请求的进度(progress)或状态(status)的其它代码

  2. 只包含 deferred 对象的一组方法,包括:done(),then(),fail(),isResolved(), isRejected(), always(), 这些方法只能观察一个 deferred 的状态,而无法更改 deferred 对象的内在状态

  3. deferred.promise()也可以接受一个 target 参数,此时传入的 target 将被赋予 Promise 的方法,并作为结果返回,而不是创建一个新对象

范例

设定两个延时时间是随机的定时器,分别用于解决(resolve)和拒绝(reject)延迟对象

$(function () { 
    function asyncEvent(){
        var dfd = new jQuery.Deferred();
        // 在一个随机的时间间隔之后 Resolve (解决状态)
        setTimeout(function(){
            dfd.resolve("欢呼");
        }, Math.floor(400+Math.random()*2000));
        // 在一个随机的时间间隔之后 reject (拒绝状态)
        setTimeout(function(){
            dfd.reject("对不起");
        }, Math.floor(400+Math.random()*2000));
        // 每半秒显示一个"working..."消息
        setTimeout(function working(){
            if ( dfd.state() === "pending" ) {
                dfd.notify("working... ");
                setTimeout(working, 500);
            }
        }, 1);
        // 返回 Promise 对象,调用者不能改变延迟对象
        return dfd.promise();
    }
    // 为异步函数附加一个done, fail, 和 progress 处理程序
    $.when( asyncEvent() ).then(
        function(status){
            alert( status+', 事情进展顺利' );
        },
        function(status){
            alert( status+', 这次你失败了' );
        },
        function(status){
            $("body").append(status);
        }
    );
})

运行范例 »

更多范例

  1. 使用目标参数

    使用目标参数,促进现有对象的Promise

返回上一级

jQuery 参考手册

关于   |   FAQ   |   我们的愿景   |   广告投放   |  博客

  简单教程,简单编程 - IT 入门首选站

Copyright © 2013-2022 简单教程 twle.cn All Rights Reserved.