Javascript中的Primise

2017-10-14  本文已影响0人  可追

    最近学习中,碰到了一个叫Primise的玩意,Promise是一个构造函数(大写字母开头,构造函数的江湖规矩),可以通过以下代码:

 new Promise(function(resolve,reject){

}) 

创建一个Promise实例。

     Promise的中文意思是“许诺、允诺的东西”,在这里我认为“允诺的东西”更合适一点,这个允诺的东西在创建实例中就已经执行参数中的函数,作为参数中的函数包含了两个参数,一个是resolve,一个是reject,也即是允诺的东西分为了两种情况:一种是下决定,另一种是拒绝。

     在哪里下决定或是在哪里拒绝,取决于你到底要怎样。

var a = '女神', promise = '我要山盟海誓'

new Promise(function(resolve,reject){

if(a==='女神'){

resolve(promise)  //下决定

}else{

reject(promise)  //拒绝

}

})

resolve和promise都可以传入参数。当允诺后,那必须要采取一些的行动,下决定的就按下决定的方法去做,拒绝就按拒绝的方法去做,这两个方法分别写在then()和catch()的括号中。

var a = '女神', promise = '我要山盟海誓'

var pro = new Promise(function(resolve,reject){

if(a==='女神'){

resolve(promise)

}else{

reject('你不是我的菜')

}

})

pro.then(function(data){

console.log(data)

}).catch(function(data){

console.log(data)

});

结果:

也就是resolve之后会执行then,reject之后会执行catch。注意到两个方法中的data,就resolve和then所传入的参数。

   一个人可以对多个人许诺,聪明的人会懂得将多个许诺凑在一起实现,要凑在一起那就用到all(),举个栗子:

var p1 = new Promise(function(resolve,reject){

resolve('去泡温泉');

});

var p2 = new Promise(function(resolve,reject){

resolve('去游泳');

});

Promise.all([p1,p2]).then(function(results){

console.log(results)

})

结果是:

all()可以传入多个Primise实例组成的数组,之后集体都执行then或catch,执行方法中的参数也是一个数组。

   以上是我对Promise对象的肤浅见解,在此记之。

上一篇 下一篇

猜你喜欢

热点阅读