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

Promise对象

是带有resolve和reject两个参数的函数。...(iterable) 这个方法返回一个新的promise对象,该promise对象在iterable参数对象里所有的promise对象都成功的时候才会触发成功,一旦有任何一个iterable里面的promise...如果该值是thenable(即,带有then方法的对象),返回的Promise对象的最终状态由then方法执行决定;否则的话(该value为空,基本类型或者不带then方法的对象),返回的Promise...通常而言,如果你不知道一个值是否是Promise对象,使用Promise.resolve(value)来返回一个Promise对象,这样就能将该value以Promise对象形式使用。...; // true p2.then((value) => { console.log(value); // 1 }); // 如果该值带有`then`方法的对象),返回的`Promise`对象的最终状态由

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

    自己实现一个JavaScript Promise类

    Promise对象用于表示一个异步操作的最终状态以及操作的值。Promise本质上是一个绑定了回调的对象,区别于将回调传入函数内部。...*/ ); Promise构造函数传入一个参数executor函数,executor是带有resolve和reject两个参数的函数。...Promise方法 方法 描述 Promise.reject(reason) 返回一个Promise对象,状态设置为失败并传递失败原因给处理函数 Promise.resolve(value) 返回一个promise...promise对象数组的执行结果,和iterable每个对象的顺序保持一致 Promise.race(iterable) 返回一个Promise,按照iterable数组任意promise对象最先执行完毕的结果立即返回...对象的属性和方法,已经promise对象从原型链继承的属性和方法,现在我们需要一步一步自己去实现一个Promise类。

    68740

    JS 手写: Promise

    这些方法还会返回一个新生成的 promise 对象,这个对象可以被非强制性的用来做链式调用。...返回一个 promise,该 promise 在所有 promise 完成后完成。并带有一个对象数组,每个对象对应每个 promise 的结果。...# Promise.reject(reason) (opens new window) 返回一个状态为失败的 Promise 对象,并将给定的失败信息传递给对应的处理方法。...如果该值是 thenable (即,带有 then 方法的对象),返回的 Promise 对象的最终状态由 then 方法执行决定;否则的话(该 value 为空,基本类型或者不带 then 方法的对象...' + successMessage); }); # 实现 # 实现 resolve 要点: 传参为一个 Promise 对象, 则直接返回它 传参为一个 thenable 对象,返回的 Promise

    1.6K40

    Promise

    ---- 1.语法 new Promise( function(resolve, reject) {...} /* executor */ ); 参数 executor executor是带有resolve...Promise构造函数执行时立即调用executor函数,resolve和reject两个函数作为参数传递给executor(executor函数在Promise返回所建promise实例对象前被调用)...---- 2.描述 promise对象是一个代理对象(代理一个值),被代理的值在Promise对象创建时可能是未知的。它允许你对异步操作的成功和失败分别绑定对应的处理方法。...这让异步方法可以像同步方法那样返回值,但并不是立即返回最终执行结果,而是一个能代表未来出现的结果的promise对象。...,只需让其返回一个promise即可 function myAsyncFun(url){ return new Promise((resolve, reject)=>{ const xhr

    77820

    promise的使用方法

    catch方法返回的还是一个 Promise 对象,因此后面还可以接着调用then方法。...从上面的代码中我们还可以看出一个点,就是如果reject和resolve方法带有参数,则会将参数传递后相应的回调函数中。...resolve(p1); }) 在上面代码中,p1和p2都是promise实例对象,而p2的resolve函数将p1作为参数传入,即一个异步操作的结果返回的是另一个异步操作。...如果参数是一个原始值,或者是一个不具有then方法的对象,则Promise.resolve方法返回一个新的 Promise 对象,状态为resolved。...Promise.resolve方法的参数,会同时传给回调函数。 4)不带有任何参数 Promise.resolve方法允许调用时不带参数,直接返回一个resolved状态的 Promise 对象。

    73610

    同一个套路手撕 Promise 的 all、allSettled、any、race 方法

    all 方法在所有输入的 Promise 实例都 resolve 后执行自身的 resolve 回调,在任意一个输入的 Promise 实例 reject 后执行自身的 reject 回调。...any 方法在所有输入的 Promise 实例都 reject 后执行自身的 reject 回调,在任意一个输入的 Promise 实例 resolve 后执行自身的 resolve 回调。...返回的 Promise 实例的 终值(eventual)或拒因(reason) 不同 {status:'fulfilled', value:同一个终值} 参数为空迭代对象时,返回值不同 AggregateError...插播一下 Promise.resolve 这个函数: Promise.resolve(value)方法返回一个以给定值解析后的 Promise 对象。...如果这个值是一个 promise ,那么将返回这个 promise ;如果这个值是 thenable(即带有"then" 方法),返回的 promise 会“跟随”这个 thenable 的对象,采用它的最终状态

    56130

    JavaScript之Promise对象

    这让异步方法可以像同步方法那样返回值,但并不是立即返回最终执行结果,而是一个能代表未来出现的结果的 Promise 对象。 Promise 对象有以下两个特点: 对象的状态不受外界影响。...executor 是带有 resolve 和 reject 两个参数的函数 。...这时,前一个回调函数,有可能返回的还是一个 Promise 对象(即有异步操作),这时后一个回调函数,就会等待该 Promise 对象的状态发生变化,才会被调用。...(3)参数不是具有 then 方法的对象,或根本就不是对象 如果参数是一个原始值,或者是一个不具有 then 方法的对象,则 Promise.resolve 方法返回一个新的 Promise 对象,状态为...(1); p1.then(function (n) { console.log(n) }); // 1 (4)不带有任何参数 Promise.resolve 方法允许调用时不带参数,直接返回一个

    97130

    【MDN学习】JavaScript 之 Promise

    }); 四、Promise.resolve(value) resolve() 方法返回一个给定解析后 Promise 对象,resolve 里面如果传递一个 Promise 对象,那么传递的也是 Promise.../ expected output: 123 }); 更多示例:传送门 五、Promise.reject(reason) reject()方法返回一个带有拒绝原因的Promise对象,参数即为被拒绝的原因...的回调结果是一个数组,即我们传入的所有 Promise 实例 reject 表示只有一个失败,则返回第一个失败的结果 成功的案例 let p = new Promise((resolve, reject...返回值: 如果传入的参数是一个空的可迭代对象,则返回一个 已失败(already rejected) 状态的 Promise。...只要传入的迭代对象中的任何一个 promise 变成成功(resolve)状态,或者其中的所有的 promises 都失败,那么返回的 promise 就会 异步地(当调用栈为空时) 变成成功/失败(resolved

    1K20

    一杯喜茶的时间手搓Promise

    使用Promise 上述已说到,Promise是一个对象,那么它肯定是由其构造函数来创建。其构造函数接受一个函数作为参数,其函数的参数有2个,分别是resolve和reject。...❝定义Promise构造函数 ❞ 创建Promise对象使用new Promise((resolve, reject) => {}),可知道Promise构造函数的参数是一个函数,我们将其定义为implement...,函数带有2个参数:resolve,reject,而这2个参数又可执行,所以也是一个函数。...链式调用是指Promise在状态是fulfilled后,又开始执行下一个Promise。要实现这个功能,我们只需要在then()里返回Promise就好了,说起来好像是挺简单的。...否则会一直调用自己 判断x的类型,如果不是函数或对象,直接resolve(x) 判断x是否拥有then(),并且如果then()是一个函数,那么就可执行x的then(),并且带有成功与失败的回调 flag

    84540
    领券