首页
学习
活动
专区
圈层
工具
发布

浅析Promise用法

浅析Promise用法 要理解Promise要知道没有Promise的回调地狱 如何插入一段漂亮的代码片 Promise语法与then的用法 所谓Promise,简单说就是一个容器,里面保存着某个未来才会结束的事件...从语法上说,Promise 是一个对象,从它可以获取异步操作的消息。Promise 提供统一的 API,各种异步操作都可以用同样的方法进行处理。 Promise对象有以下两个特点。...有了Promise对象,就可以将异步操作以同步操作的流程表达出来,避免了层层嵌套的回调函数。此外,Promise对象提供统一的接口,使得控制异步操作更加容易。...---- 要理解Promise要知道没有Promise的回调地狱 一般我们要在一个函数执行完之后执行另一个函数我们称之为callback‘回调’,简单的写一下 如何插入一段漂亮的代码片 去博客设置页面,...Promise语法与then的用法 var promise = new Promise(function(resolve, reject) { // ... some code if (/*

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

    Promise用法详解(一)

    Promise 基本概念 Promise是一个构造函数,所以可以 new 出一个Promise的实例 在Promise上有两个函数 resolve(成功之后的回调函数)和 reject(失败后的回调函数...所以只要是Promise构造函数创建的实例,都可以访问到 .then()方法 Promise表示一个一步操作,每当我们new一个Promise的实例,这个实例就代表具体的异步操作。...我们可以在new出来的Promise实例上,调用 .then()方法,预先为这个Promise异步操作,指定成功(resolve)和失败(reject)回调函数 形式上和具体的Promise异步操作的区别...let promise = new Promise(function() { // 这个function内部写的就是具体的异步操作 } 上面则是一个具体的异步操作,其中使用function制定一个具体的异步操作...Promise的执行时机 每当new一个Promise实例的时候,除了会得到一个promise实例之外,还会立即调用我们为Promise构造函数传递的那个function,执行function中的异步代码

    52820

    Promise用法及使用案例

    2.基本用法 ES6规定,Promise对象是一个构造函数,用来生成Promise实例 var promise = new Promise(function(resolve,reject){ if(...3.链式操作的用法 function runAsync1(){ var p = new Promise(function(resolve, reject){ //做一些异步操作...多次运行这段代码,你会随机得到下面两种结果: catch的用法 我们知道Promise对象除了then方法,还有一个catch方法,它是做什么用的呢?...其实它和then的第二个参数一样,用来指定reject的回调,用法是这样: getNumber() .then(function(data){ console.log('resolved');...即便是有错误的代码也不会报错了,这与我们的try/catch语句有相同的功能。 all的用法 Promise的all方法提供了并行执行异步操作的能力,并且在所有异步操作执行完后才执行回调。

    69630

    consolewriteline用法_promise sb to do

    大家好,又见面了,我是你们的朋友全栈君。 1. Promise的含义 Promise 是异步编程的一种解决方案,比传统的解决方案——回调函数和事件——更合理和更强大。...它由社区最早提出和实现,ES6 将其写进了语言标准,统一了用法,原生提供了Promise对象。 所谓Promise,简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果。...从语法上说,Promise 是一个对象,从它可以获取异步操作的消息。Promise 提供统一的 API,各种异步操作都可以用同样的方法进行处理。...2.基本用法 一个promise可以通过promise构造函数来创建,这个构造函数只接受一个参数:包含初始化promise代码的执行器(executor)函数,在该函数内包含需要异步执行的代码。...每个promise都会经历一个短暂的生命周期:先是出于进行中(pending)的状态,此时操作尚未完成,所以它是未处理的,一旦异步操作执行结束,promise则变为已处理的状态。

    60420

    Promise的含义和用法「建议收藏」

    大家好,又见面了,我是你们的朋友全栈君。 含义 Promise是异步编程的一种解决方案。 Promise对象有以下2个特点: 1.对象的状态不受外界影响。...**只有异步操作的结果,可以决定当前是哪一种状态,任何其他操作都无法改变这个状态。这也是Promise这个名字的由来,它的英语意思就是“承诺”,表示其他手段无法改变。...就算改变已经发生了,你再对Promise对象田静回调函数,也会立即得到这个结果。这与事件(Event)完全不同,事件的特点是,如果你错过了它,再去监听,是得不到结果的。...有了Promise对象,就可以将异步操作以同步操作的流程表达出来,避免了层层嵌套的回调函数。...Promise构造函数有俩参数: resolve reject 2.用法 function runAsync1(){ var p = new Promise(function(resolve, reject

    69530

    解释Promise的基本用法及状态

    Promise 的引入使得处理异步代码变得更加直观,避免了回调地狱的问题。本文将详细介绍 Promise 的基本用法、状态及其使用场景。 一、Promise 的基本概念 1....Promise 的构造函数 Promise 是通过 new Promise(executor) 的方式创建的。executor 是一个函数,接收两个参数:resolve 和 reject。...}); 三、Promise 的基本用法 1. 创建 Promise 如前所述,可以使用 new Promise() 创建一个新的 Promise 对象。 2....它提供了一种更清晰的方式来管理异步操作的结果和错误。通过理解 Promise 的状态、基本用法以及错误处理方式,开发者可以编写出更健壮、可维护的代码。...基本用法:使用 new Promise() 创建 Promise,使用 .then() 和 .catch() 处理结果。 链式调用:支持链式调用,便于处理多个异步操作。

    35110

    async + await 的理解和用法(Promise)

    前言 async/await 是 ES7 提出的基于 Promise (ES6 中提出的) 的解决异步的最终方案 async + await 的作用: 简化 promise 的异步操作,把 promise...的异步操作编程变为同步的写法 async 将一个函数标记为异步函数,await 需要在异步函数中使用,标记当前操作是异步操作 async + await 必须配合 promise 使用,同时 async...获取失败的结果 当 Promise 抛出错误信息时,控制台默认是直接抛出异常的 reject('接口请求失败') 可以使用 try … catch 捕获 promise 抛出的错误 try {...多个 Promise 的场景 使用 Promise Promise.all 的参数是一个数组,数组的每一项是一个返回的 promise 的函数调用 Promise.all([getProfile(),...对象的 resolve 就是 undefined 如果在 async 函数中写了 return,那么 promise 对象的 resolve 就是 return 的值 如果 async 里的代码都是同步的

    5K11

    ES6 Promise用法小结

    目录 1.什么是Promise reject的用法 catch的用法 all的用法 race的用法 ---- 1.什么是Promise Promise 是异步编程的一种解决方案,其实是一个构造函数,自己身上有...(Ps:此处执行多次是因为研究该用法的时候我在一个react的demo中进行的,该页面多个元素改变导致页面多次渲染执行所致,正常页面只渲染一次的话就所有只会执行一次) reject的用法 以上是对promise...的resolve用法进行了解释,相当于resolve是对promise成功时候的回调,它把promise的状态修改为 fullfiled,那么,reject就是失败的时候的回调,他把promise的状态修改为...(也就是说then方法中接受两个回调,一个成功的回调函数,一个失败的回调函数,并且能在回调函数中拿到成功的数据和失败的原因),所以我们能够分别拿到成功和失败传过来的数据就有以上的运行结果 catch的用法...即便是有错误的代码也不会报错了 all的用法 与then同级的另一个方法,all方法,该方法提供了并行执行异步操作的能力,并且在所有异步操作执行完后并且执行结果都是成功的时候才执行回调。

    46720

    盘点JavaScript中的Promise 链的高级用法

    一、前言 有一系列的异步任务要一个接一个地执行 — 例如,加载脚本。如何写出更好的代码呢? Promise 提供了一些方案来做到这一点。...之所以这么运行,是因为对 promise.then 的调用会返回了一个 promise,所以可以在其之上调用下一个 .then。...就目前而言,是做不到的。 为了使链可扩展,需要返回一个在头像显示结束时进行 resolve 的 promise。...链中的下一个 .then 将一直等待这一时刻的到来。 作为一个好的做法,异步行为应该始终返回一个 promise。这样就可以使得之后计划后续的行为成为可能。...三、总结 本文基于JavaScript基础,介绍了Promise 链的高级用法,主要介绍了使用Promise时新手常会出现的几个问题,对这几个问题进行详细的解答。 通过案例的分析,能够更直观的展示。

    1.4K20

    ES6之Promise用法详解

    三 Promise的基本用法 3.1 基本用法 上一小节我们认识了promise长什么样,但对它用到的resolve、reject、then、catch想必还不理解。下面我们一步步学习。...回调,并返回的是一个新的Promise实例(不是原来那个Promise实例),且返回值将作为参数传入这个新Promise的resolve函数。...catch方法指定处理错误的回调函数,Promise对象抛出的错误不会传递到外层代码,即不会有任何反应(Chrome会抛错),这是Promise的另一个缺点。...总结一下创建promise的流程: 使用new Promise(fn)或者它的快捷方式Promise.resolve()、Promise.reject(),返回一个promise对象 在fn中指定异步的处理...这一章节,将会用例子的形式,以说明promise使用过程中的注意点及容易犯的错误。

    1.4K30

    理解 $q 和 promise基本用法-2 4.17

    可以先看我的第一篇文章 $q 和 promise 的基础理解 $q 和 promise 需要在 angular 中掌握异步的知识,我们需要掌握这几个重要的知识点, http, promise 下面着重讲解一下...$q 的功能和它的 api 的使用。...promise:回执单(承诺) 记录 promise:deferred,(延期事件) 同时,家具厂给他留下了一个回执号,并对他说:我们做好了会给您送过去,放心吧。...这叫做==promise==,也就是承诺。 这样,这个==defer==算是正式创建了,于是他把这件事记录在自己的日记上,并且同时记录了回执号,这叫做==deferred==,也就是已延期事件。...$q.all:多个 promise 好,我们再扩展一下这个故事: 张先生这次需要做一个桌子,三把椅子,一张席梦思,但是他不希望今天收到个桌子,明天收到个椅子,后天又得签收一次席梦思,而是希望家具厂做好了之后一次性送过来

    1.1K30

    【温故知新】5 个 Promise 要避免的常见用法~

    本瓜一直觉得 Promise 就是咱 JS 人的浪漫,没错,Promise 天天见,但或许越熟悉越陌生,我们在一直用的过程中会形成一些定式,这导致难免会漏掉一些定式以外的要点; 本篇带来 Promise...Promise 就是来解决回调地狱的,如果还写成这个样子,那一切还有什么意义?...避免错误使用 async await Async/Await 是一种更高级的语法,用于处理同步代码中的多个 Promise。...=> { // HTTP request resolve(result); }); 这样做的好处就是,当用它的时候,它才执行,而不是我声明它的时候,就执行了~ 将 Promise 惰性处理✔...Promise 提供的衍生的一些 API 就是拿来用的(Promise.all、Promise.race、Promise.finally 等待),该用就用,别客气~ ---- OK,以上就是本篇分享啦~

    35030

    JavaScript手写Promise、Promise.then()、Promise.all()、Promise.race()

    我们可以将传给then函数和新Promise的resolve一起push到前一个Promise的callbacks数组中,达到承前启后的效果: 承前:当前一个Promise完成后,调用其resolve变更状态...如果返回的结果是个Promise,则需要等它完成之后再出发新Promise的resolve,所以可在其结果的then里调用新Promise的resolve then(onFulfilled, onReject...接收一个Promise实例的数组或具有Iterator接口的对象作为参数 这个方法返回一个新的Promise对象 遍历传入的参数,用Promise.resolve()将参数“包一层”,使其变成一个Promise...该方法的参数是Promise实例数组,然后其then注册的回调方法是数组中的某一个Promise的状态变为fufilled的时候执行。...因为Promise的状态只能改变一次,那么我们只需要把Promise.race中产生的Promise对象的resolve,注入到数组中的每一个Promise实例中的回调函数即可。

    1.3K10
    领券