gpt4 book ai didi

javascript - 什么是 promise 对象?

转载 作者:行者123 更新时间:2023-12-03 08:27:14 25 4
gpt4 key购买 nike

关闭。这个问题需要更多 focused .它目前不接受答案。












想改进这个问题?更新问题,使其仅关注一个问题 editing this post .

7年前关闭。




Improve this question




开始学习 Ember 后,每当有对 Promise 对象的引用时,我都会感到困惑。我知道对象,例如X 类或 JSON 对象的实例。例如,当有人说该方法时 m返回一个 JSON 对象,然后我知道期望键值对。我如何将这种理解与 promise 对象联系起来? Promise 对象是值吗(可以是数组、字符串、数字、JSON 对象等)?

如果一个方法返回一个 Promise 对象,我应该期待什么?

最佳答案

Promise 是 EcmaScript 6 (ES6) 的一种新 Object 类型,其中有许多 polyfills and libaries(即 ES5 JavaScript 引擎的实现),并且允许(以及其他好处)摆脱臭名昭著的回调 hell ,并可以读写异步代码很容易。

一个 Promise 可以具有以下三种状态中的一种(并且只有一种):

  • 待定
  • 已完成
  • 拒绝

  • 如果 promise 被拒绝或履行,它也有一个 已解决的 状态。

    基本上,它是一个具有 then 属性(以及其他属性)的对象,它是一个 function ,它至少接受一个函数作为参数,并且可以接受两个:如果 promise 返回已完成状态,则将调用第一个,并且如果 promise 返回拒绝状态,则将调用第二个
    then 函数返回另一个 Promise,因此 Promise 是可链接的。

    Promise 对象比我刚刚在这里写的要复杂得多,但这只是为了给你一个开始。

    顺便说一句,如果您使用 jQuery,您可能已经使用了类似 Promise 的对象(注意 -like 后缀): $.ajax() 返回一个类似 Promise 的对象(称为 thenable s),该对象具有 done (和 then )属性,是一个 function,它接受一个函数作为参数,看起来像一个 fulfilled 函数(通常只接受一个参数)。 Promise 对象也可能有一个 done 函数属性(不是标准化的,AFAIK,但几乎所有的 polyfill 和库都实现了它),它的作用类似于 then 函数,只是它不返回一个 Promise(因此得名:如果你完成了与 promise ,然后使用 done() ,但如果你需要对 promise 的结果做一些事情,使用 then() )。

    例如:你可能见过或写过这样的东西:
    $.ajax({url: '/path/to/html/piece'})
    .done(function(data) {
    $('whateverSelector').html(data);
    });

    但是 jQuery 所谓的 promise ,即使它们是 thenable s,也不能满足 promise spec

    关于javascript - 什么是 promise 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26672317/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com