jQuery   发布时间:2022-04-19  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了你需要使用jQuery.when与一个延迟对象?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
假设您有以下代码

function someProcess() {
    var deferred = $.Deferred();

    apiCall(function (recvData) {
        deferred.resolveWith(null,[recvData]);
    });

    return deferred.promise();
}

function mainFunction() {
    $.when(someProcess())
        .then(someOtherProcess);
}

在这个例子中,我只需要等待一个延迟被解决.在这种情况下,如上所述写第二个函数与写这个函数之间有什么区别(如果有的话):

function mainFunction() {
    someProcess()
        .then(someOtherProcess);
}

我的意思是,我喜欢以第一种方式编写它,因为它清楚地表明我们正在使用jQuery延迟对象,但我很好奇在这种情况下是否有必要.

编辑:我修改了then()调用中的拼写错误.谢谢你抓住了.

编辑:感谢nrabiNowitz的答案.我认为你已经在使用when()和使用原始jQuery延迟对象实例方面确定了我不确定的要点.我再去修复我的代码以返回一个promise而不是整个延迟对象.这就是我现在在实际代码中执行的操作,只是忘了在这里添加它.

解决方法

我没有使用自定义的Deferred对象,但我的理解是你的例子有两个不同之处:

>使用$.when()允许您随意添加更多延迟对象以供处理程序处理.显然,这不是什么大问题,因为你必须改变这行代码增加更多的延迟.
> $.when()只获取Promise对象,而不是整个延迟对象,如果我理解正确的是隐藏延迟状态更改方法(例如resolve())的一致性度量,只暴露处理程序挂钩和状态检查方法.这似乎是一种很好的做法,但在你的例子中,你可以通过调用someProcess().promise()而不是$.when(someProcess())来做同样的事情.

所以我认为你是对的 – 两种方法都可行,但使用$.when()的主要好处是使代码更易读,并为其他程序员设置适当的期望.使用$.when()或deferred.promise()将另外有助于防止一些不那么有能力的编码人员以令人困惑的方式搞乱你的延期状态.

大佬总结

以上是大佬教程为你收集整理的你需要使用jQuery.when与一个延迟对象?全部内容,希望文章能够帮你解决你需要使用jQuery.when与一个延迟对象?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。