在饱尝了利用函数执行栈书写异步代码的痛苦后,人们创造出了Promise对象,异步
做为在ES6中被统一规范的对象,它用来在函数中将函数逻辑与结果处理分隔开来,函数
该对象提供了两个参数,resolve以及reject。这两个参数都是函数,下面是使用spa
Promise对象的简单代码示例:code
1 var fn=function(num){ 2 return new Promise(function(resolve,reject){ 3 if(typeof num=='number'){ 4 resolve(); 5 }else{ 6 reject(); 7 } 8 }); 9 } 10 11 fn(2).then(function(){ 12 console.log('输入了一个数字!'); 13 }).catch(function(){ 14 console.log('输入的不是一个数字!'); 15 });
上面是一个简单逻辑判断输入函数fn的参数是否为数字的代码,其中函数体fn执行返回一个Promise对象,对象
若是结果达到预期,执行resolve(),反之执行reject()。在函数执行时,resolve对应then,reject对应catch,blog
根据这种一一对应关系,咱们能够轻易对函数结果进行操做。值得一提是,then函数含有两个参数,第一io
个对应resolve,而第二个对应reject。因此实际上catch(()=>{})等价于then(null,()=>{}).console
另外,Promise的应用场景很是普遍,好比咱们使用的不一样AJAX请求中的有依赖的数据传递等。function