javascript - jQuery.when 接受原生 Promise 对象吗?

标签 javascript jquery promise es6-promise jquery-deferred

我可以通过native Promise object吗?至 jQuery when它的行为是否符合预期?

最佳答案

是或否取决于使用的 jQuery 版本。

  1. jQuery <3 ... no ... $.when() 不会解开原生 js Promise。它以与处理任何其他对象/值相同的方式处理除自己的 Deferreds/Promises 之外的任何内容。

// using jQuery 2.1.1
$.when(Promise.resolve('xxxyyy')).then(result => {
    console.log(result);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

  • jQuery 3+ ...是的...在版本 3 中,jQuery 被修改为(至少在这方面)符合 Promise/A+规范$.when() 将解开任何 Promise/A+ 兼容的 Promise/thenable,包括 js 原生 Promises。
  • // using jQuery 3.1.1
    $.when(Promise.resolve('xxxyyy')).then(result => {
        console.log(result);
    });
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>

    关于javascript - jQuery.when 接受原生 Promise 对象吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51459351/

    相关文章:

    jquery - 如何使设定的文本大小填充容器

    javascript - JQuery when() 出现错误 404

    javascript - 验证 FORM 内 DIV(可见向导步骤)内的 HTML 输入元素?

    AngularJS。在服务中解决 promise 后如何更新指令?

    javascript - 为什么在这种情况下原生 promise 似乎比 chrome 中的回调更快?

    javascript - 使用 cancel 方法增强 ES6 Promise

    javascript - 如何封装由 execCommand 创建的图像

    javascript - 首先发生什么,CSS 或 JS 事件?

    javascript - 为什么使用匿名函数?

    javascript - JQuery Unique() 函数无法正常工作