JS-Promise

Promise

The Promise object represents the eventual completion (or failure) of an asynchronous operation, and its resulting value.
Promise对象示意异步操纵的终究完成(或失利)及其效果值。

1.Syntax(语法)

new Promise(executor);

executor:

通报参数resolve和reject的函数。executor函数由Promise完成马上实行,通报resolve和reject函数(在Promise组织函数返回建立的对象之前挪用executor)。当挪用resolve和reject函数时,离别代表已完成和已失利。当实行顺序完成,胜利则挪用resolve,涌现毛病则挪用reject。

2.Description(形貌)

Promise许可异步要领返回与同步要领相似的值:异步要领不是马上返回终究值,而是返回一个Promise,在未来的某个时刻供应该值。

Promise状况:

  • pending : 初始状况,未完成或谢绝。
  • fulfilled : 意味着操纵胜利完成。
  • rejected : 示意操纵失利。

返回的Promiseprototype下有.then().catch()要领
《JS-Promise》

3.Methods(要领)

Promise.all(iterable)

返回一个Promise,这个Promise在一切可迭代参数中的一切Promise都fulfilled胜利返回,或许在可迭代参数中的一个Promise为rejects失利时返回。

var promise1 = new Promise(function(resolve, reject) {
  setTimeout(resolve('promise1'), 100);
});
var promise2 = new Promise(function(resolve, reject) {
  setTimeout(resolve('promise2'), 50);
});

Promise.all([promise1, promise2]).then(function(values){
  console.log(values);
});
// log: Array [promise1, promise2]

Promise.race(iterable))

返回一个Promise,这个Promise在一切可迭代参数中只需有一个Promise实行终了,则会马上实行.then(),之后会继承实行剩下的Promise直到完毕。

var promise1 = new Promise(function(resolve, reject) {
  setTimeout(function(){
      console.log('resolve--------promise1')
      resolve('promise1')
  }, 5000);
});
var promise2 = new Promise(function(resolve, reject) {
  setTimeout(function(){
      console.log('resolve--------promise2')
      resolve('promise2')
  }, 3000);
});
var promise3 = new Promise(function(resolve, reject) {
  setTimeout(function(){
      console.log('reject--------promise3 => 第一个异步使命实行终了')
      reject('promise3')
  }, 1000);
});

Promise.race([promise1, promise2, promise3]).then(function(success){
    console.log('success--------'+success);
}).catch(function(error){
    console.log('error--------'+error+'=> 马上实行.then(),之后会继承实行未完成的异步使命promise2、promise1');
});
// 
/*
log:reject--------promise3 => 第一个异步使命实行终了
    error--------promise3=马上实行.then(),之后会继承实行未完成的异步使命promise2、promise1
    index.html:20 resolve--------promise2
    index.html:14 resolve--------promise1
*/

Promise.reject()

返回因给定原因被谢绝的Promise对象。

function fnc(obj){
    return new Promise(function(reslove,reject){
        if(obj) reslove('success')
        else reject('error')
    })
}
fnc(false).then(function(success){
    console.log('success------'+success)
},function(error){
    console.log('error------'+error)
})
//log : error------error
**

Promise.resolve()

返回运用给定值剖析的Promise对象。假如值是thenable(即具有then要领),返回的promise将“遵照”该thenable,采纳其终究状况,不然,返回的promise将用值来完成。一般,假如不知道一个值是不是是一个promise,那末promise.resolve(value)它,并将返回值作为一个promise来处置惩罚。

function fnc(obj){
    return new Promise(function(reslove,reject){
        //依据obj的属性挑选返回对应的状况
        if(obj) reslove('success')
        else reject('error')
    })
}
fnc(false).then(function(success){
    console.log('success------'+success)
},function(error){
    console.log('error------'+error)
})
//log : error------error

简简单单的叙说下Promise经常使用的几个属性,有不对的地方请指教~昨天看了一篇文章,照样挺有启示的。。。。。
前端专业方向的终点

    原文作者:杜夫
    原文地址: https://segmentfault.com/a/1190000018446980
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞