首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【译】怎么写一个JavaScript Promise

最常用方法是使用对象字面量语法: const myCar = { color: 'blue', type: 'sedan', doors: '4', }; 你还可以创建一个类,并通过...最终promise告诉我们一些关于我们从返回异步函数完成情况--生效了或失败了。我们认为这个功能是成功,如果promise是解决了,并且说promise被拒绝是不成功。...例如,具有数据保存在服务器方法API将是返回promise绝佳候选者! 外号: promise为我们提供了一种等待异步代码完成,从中捕获一些值,并将这些值传递给程序其他部分方法。...使用promise也称为消费promise。在上面的示例中,我们函数返回了一个promise对象。这允许我们使用方法链式功能。....catch,当我们promise拒绝时,它将被调用,并返回我们传递给reject任何信息。 最有可能是,你更多使用promise,而不是创建它们

71020

怎么写一个JavaScript Promise

最常用方法是使用对象字面量语法: const myCar = { color: 'blue', type: 'sedan', doors: '4', }; 你还可以创建一个类,并通过...最终promise告诉我们一些关于我们从返回异步函数完成情况--生效了或失败了。我们认为这个功能是成功,如果promise是解决了,并且说promise被拒绝是不成功。...例如,具有数据保存在服务器方法API将是返回promise绝佳候选者! 外号: promise为我们提供了一种等待异步代码完成,从中捕获一些值,并将这些值传递给程序其他部分方法。...使用promise也称为消费promise。在上面的示例中,我们函数返回了一个promise对象。这允许我们使用方法链式功能。....catch,当我们promise拒绝时,它将被调用,并返回我们传递给reject任何信息。 最有可能是,你更多使用promise,而不是创建它们

37430
您找到你想要的搜索结果了吗?
是的
没有找到

重学JavaScript Promise API

在这篇教程中,我们掌握如何在JavaScript中创建并使用Promise。我们将了解Promise链式调用、错误处理以及最近添加到语言中一些Promise静态方法。 什么是Promise?...在JavaScript中,一些操作是异步。这意味着当这些操作完成时,它们产出结果或者值并不会立即生效。 Promise一个特殊JavaScript对象代表了异步操作最终结果。...当从远程服务器收到成功响应时,会传递给resolve方法。如果发生任何错误(无论是在服务器上还是在网络层),reject方法调用一个Error对象。...then方法 当我们实例化一个Promise对象时,我们将得到一个未来可用数据代理。在我们例子中,我们期待从远程服务返回一些数据。那么,我们如何知道数据何时可用呢?...Promise.allSettled() 不像all,Promise.allSettled 等待传递给一个Promise实现或拒绝。

13920

可视化 js:动态图演示 Promises & AsyncAwait 过程!

为了深入理解 Promise在某个不眠之夜,做了一些动画来演示 Promise 运行,多年来好奇心终于得到实现。...在前面的介绍章节,展示了一个获得图片、压缩图片、为图片应用过滤器并保存例子!最终,这变成了一个混乱嵌套回调。 幸运Promise 可以帮助我们解决这个问题!....catch 方法接收传递给 rejected 方法值。 最终,我们拥有了 promise 被解决后 (resolved) 值,并不需要整个 promise 对象!...这个语法看起来已经比之前嵌套回调好多了。 宏任务和微任务(macrotask and microtask) 我们知道了一些如何创建 promise 以及如何提取出 promise 方法。...我们现在能够创建隐式地返回一个对象异步函数,而不是显式地使用 Promise 对象!这意味着我们不再需要写任何 Promise 对象了。

2.1K10

JavaScript 权威指南第七版(GPT 重译)(五)

接下来小节: 解释承诺术语并展示基本承诺用法 展示 Promises 如何被链式调用 展示如何创建自己基于 Promise API 重要 起初,Promise 似乎很简单,事实上...编写返回 Promises 函数确实非常有用,本节展示了如何创建基于 Promise API。特别是,我们展示getJSON()和wait()实现。...当我们调用Promise.resolve()时,通常会传递实现值以创建一个 Promise 对象,该对象很快实现为该值。但是该方法名称不是Promise.fulfill()。...如果 Promisep1传递给Promise.resolve(),它将返回一个 Promisep2,该 Promise 立即解决,但直到p1实现或拒绝之前,才会实现或拒绝。...采用这种方法,我们代码可以返回第一个(最外层)Promise,知道它最终实现(或拒绝!)与序列中最后一个(最内层)Promise 相同值。

17510

JS 手写: Promise

Promise 对象用于表示一个异步操作最终完成 (或失败)及其结果值。 # 描述 一个 Promise 对象代表一个在这个 promise创建出来时不一定已知值。...# Promise 链式调用 我们可以用 promise.then(),promise.catch() 和 promise.finally() 这些方法进一步操作与一个变为已敲定状态 promise...这些方法还会返回一个新生成 promise 对象,这个对象可以被非强制性用来做链式调用。...# 创建 Promise Promise 对象是由关键字 new 及其构造函数来创建。该构造函数会把一个叫做“处理器函数”(executor function)函数作为参数。...' + successMessage); }); # 实现 # 实现 resolve 要点: 参为一个 Promise 对象, 则直接返回 参为一个 thenable 对象,返回 Promise

1.4K40

JavaScript中Promise

文章目录 1.定义 2.作用 3.语法 4.状态 5.方法 6.原型方法 7.catch()方法 8.实例 1.定义 Promise 对象一个代理对象(代理一个值),被代理值在Promise对象创建时可能是未知...这让异步方法可以像同步方法那样返回值,但并不是立即返回最终执行结果,而是一个能代表未来出现结果promise对象 2.作用 1、主要用于异步计算。...当其中任一种情况出现时,Promise 对象 then 方法绑定处理方法(handlers )就会被调用(then方法包含两个参数:onfulfilled 和 onrejected,它们都是 Function...3.Promise.reject(reason) 返回一个状态为失败Promise对象,并将给定失败信息传递给对应处理方法。...testPromise() 方法在每次点击 按钮时被调用,该方法创建一个promise 对象,使用 window.setTimeout() 让Promise等待 1-3 秒不等时间来填充数据(通过

1.1K20

关于 JavaScript 中 Promise

在JavaScript中,Promise是一种用于处理异步操作对象代表了一个异步操作最终完成或失败,并可以返回其结果。...Promise 如何运行一个Promise一个代理,代表一个创建 promise 时不一定已知值。允许你处理程序与异步操作最终成功值或失败原因关联起来。...一个待定 Promise 最终状态可以是已兑现并返回一个值,或者是已拒绝并返回一个原因(错误)。当其中任意一种情况发生时,通过 Promise then 方法串联处理程序将被调用。...; // 异步操作失败,调用reject } }, 2000); // 2秒后执行});上诉示例中,我们创建一个Promise对象代表了一个模拟异步操作。...然后,我们使用 Promise.all() 方法来并行处理这三个 Promise,将它们放入一个数组中作为参数传递给 Promise.all() 方法

56363

JS原生引用类型解析7-Promise类型

简介 ES6引入了一个全新对象Promise,用于表示一个异步操作最终状态(完成或失败),以及其返回值。Promise最直接好处就是链式调用,另外在错误捕获上也很方便。...then方法对象),返回Promise对象状态为fulfilled,并且将该value传递给对应then方法。...如果调用 then Promise 状态(fulfillment 或 rejection)发生改变,但是 then 中并没有关于这种状态回调函数,那么 then 创建一个没有经过回调函数处理新...onFinally) 类似,它们不同是: 调用内联函数时,不需要多次声明该函数或为该函数创建一个变量保存。...由于无法知道promise最终状态,所以finally回调函数中不接收任何参数,仅用于无论最终结果如何都要执行情况。

1.3K10

深入理解JS事件循环

/ 1 }).then(()=>{ ... }) 2.使then方法支持链式调用 其实支持链式核心就是then方法要返回一个promise,咱们来改造一下实现支持链式调用。...就不多说啦 重点看它们都会把新创建promise赋值给then方法,执行完后then方法会返回这个新promise,这样就能实现then链式调用了 3.使then方法链式调用可以参 但是你没有发现一个问题...,then方法一个参数,也就是onResolved()函数,函数内部返回值应该是要能够传递给下面接着进行链式调用then方法,如下所示: new Promise((resolve,reject...,咱们可以现有的数据很方便转换成promise对象 all方法 all方法也是很常用方法,它可以传入promise数组,当全部resolve或者有一个reject时,执行结束,当然返回也是promise...then方法取值 OK,到现在已经实现一个自己promise对象

4K60

深入浅出Promise,循序渐进掌握JavaScript异步编程

Promise基本用法Promise 是 JavaScript 中处理异步操作一种方式。它是一个对象,代表了一个异步操作最终完成或失败结果。...then方法可以链式调用,每个then方法都返回一个 Promise 实例,因此可以实现连续异步操作。...开发者可以很方便地多个异步操作并行执行,并等待它们全部完成或任一完成后继续进行后续处理。更好代码组织: Promise 链式调用可以使代码逻辑更加清晰可读。...Promise实现基本原理 Promise 源码实现原理可以简要概括如下:构造函数: Promise一个构造函数,当我们使用new关键字创建一个 Promise 对象时,会调用构造函数。...结构和调用方式: Promise一个对象,它有自己方法和状态。我们通过new关键字创建 Promise 实例,并通过then、catch和finally等方法来注册回调函数。

43310

这次我们来聊聊它是如何实现

调用创建生成器函数会返回一个 Generator { } 生成器实例对象。 初次接触生成器函数同学,看到上面的例子可能稍微会有点懵。...,我们通过 let g = gen() 调用生成器函数创建一个生成器对象 g ,此时 g 拥有 next 上述结构 next 方法。...上边是一个基于 Generator 函数简单执行过程,其实本质非常简单: 调用生成器函数会返回一个生成器对象,每次调用生成器对象 next 方法会执行函数到下一次 yield 关键字停止执行,并且返回一个...其实看到这里,经过前边知识点铺垫相信最终 Async/Await 实现原理对你来说一点都不会陌生。...我们讲述了从 Generator 函数发展到 Async/Await 异步解决方案以及它们如何在低版本浏览器中 polyfill 最终延伸到它们实现原理。

71620

React 中必会 10 个概念

通常使用map / reduce / filter数组方法实现。 ? 现在,让我们看看如何使用 ES6 箭头函数实现相同函数。 ? 默认参数 既然我们已经了解了箭头函数,那么让我们来谈谈默认参数。...如果 offset,limit 和 orderBy 传递给函数调用,则它们覆盖函数定义中定义为默认参数值。无需额外代码。 ⚠️请注意,这 null 被视为有效值。...继承,这不是特定于 JavaScript 东西,而是面向对象编程中常见概念。 简而言之,这是一个创建为另一个子级能力。...这是一个可以与对象以及数组一起使用概念。分解是简化 JavaScript 代码一种简便方法,因为使我们可以在一行中将数据从对象或数组中拉出。... async / await 包含在此列表中是因为在每个前端项目中,我们正在做很多需要异步代码工作。一个常见例子是当我们想通过 API 调用获取数据时。

6.6K30

(建议收藏)关于JS事件循环, 这一篇就够啦

就不多说啦 重点看它们都会把新创建promise赋值给then方法,执行完后then方法会返回这个新promise,这样就能实现then链式调用了 3.使then方法链式调用可以参 但是你没有发现一个问题...,then方法一个参数,也就是onResolved()函数,函数内部返回值应该是要能够传递给下面接着进行链式调用then方法,如下所示: new Promise((resolve,reject...,咱们可以现有的数据很方便转换成promise对象 all方法 all方法也是很常用方法,它可以传入promise数组,当全部resolve或者有一个reject时,执行结束,当然返回也是promise...then方法取值 OK,到现在已经实现一个自己promise对象!...当执行到await 99时,会默认创建一个 Promise 对象,如下: 然后JavaScript引擎暂停当前子协程执行,主线程控制权交给父协程。

1.5K31

社招前端经典手写面试题合集

,bind多次后执行,函数this还是指向第一次bind对象实现JSONP方法利用标签不受跨域限制特点,缺点是只能支持 get 请求创建script标签设置script标签src属性...Promise相关方法实现Promiseresolve实现 resolve 静态方法有三个要点:参为一个 Promise, 则直接返回。...参为一个 thenable 对象,返回 Promise 会跟随这个对象,采用它最终状态作为自己状态。其他情况,直接返回以该值为成功状态promise对象。...最大作用finally里函数,无论如何都会执行,并会把前面的值原封不动传递给一个then方法中如果finally函数中有promise等异步任务,会等它们全部执行完毕,再结合之前成功与否状态,返回值...,实现原理很简单:先定义一个包含原始数组第一个元素数组,然后遍历原始数组,原始数组中每个元素与新数组中每个元素进行比对,如果不重复则添加到新数组中,最后返回新数组;因为时间复杂度是O(n

68840

Fetch API 使用

简单示例 fetch() 方法接受一个参数——资源路径。无论请求成功与否,都返回一个 promise 对象,resolve 对应请求 Response 对象。...Response 对象后,通过该对象 json() 方法可以结果作为 JSON 对象返回,response.json() 同样会返回一个 Promise 对象,因此可以继续链接一个 then() 方法...然后 Request 对象递给 fetch() 方法,用于替代默认 url 字符串。...=> { // }).catch(err => { console.log(err); }); 除此之外,还可以基于 Request 对象创建对象,比如一个 GET 请求创建成为一个 POST...clone 支持 如何让 body 能经得起多次读取呢?Fetch API 提供了一个 clone() 方法调用这个方法可以得到一个克隆对象

1.2K20
领券