javascript - 是否可以使用 jQuery 的 .when 而不使用 ajax 调用?

标签 javascript jquery jquery-deferred

http://jsfiddle.net/f4hmL/235/

function showData() {
    alert("boop!");
}

function method1() {
    var dfd = $.Deferred();
    setTimeout(dfd.resolve(), 10000);
    return dfd.promise();
}

function method2() {
    var dfd = $.Deferred();
    setTimeout(dfd.resolve(), 6000);
    return dfd.promise();
}

$.when(method1(), method2()).then(showData);​

我希望仅在两个延迟对象解析时才看到显示“boop”,但我立即看到了它。有可能实现这一目标吗? jQuery 的“when”方法是正确使用的函数吗?

最佳答案

您没有将正确的内容传递给setTimeout()。这不起作用,因为您立即调用 dfd.resolve() 并将结果传递给此行中的 setTimeout():

setTimeout(dfd.resolve(), 10000);

相反,你需要这样的东西:

setTimeout(function() {dfd.resolve()}, 10000);

在超时触发之前不会调用解析。

关于javascript - 是否可以使用 jQuery 的 .when 而不使用 ajax 调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12877722/

相关文章:

javascript - Promise 数组执行不正确

javascript - 将 jQuery.Deferred 对象传递给 deferred.resolve 时,jQuery.Deferred 是否存在错误?

javascript - Android + Linux Chroot + Node.js = 在手机上运行您的 node.js 应用程序

javascript - 参数解构(相当于python的double-splat)

javascript - 为什么 div id ="in"不留在旁边 div id ="out",在此代码上?

javascript - Power BI 嵌入 + VueJS 错误 : "TypeError: Cannot read property ' powerBiEmbed' of null"

javascript - 如何在[javascript或jquery]字段中显示播放声音的名称(在按键上)?

php - 如何使用 WP 中的任何 jQuery 缩放插件缩放附加图像?

javascript - 仪表板跨域 AJAX 与 jquery

jquery - 延期与 promise