ES6 Promise
2018-05-17 本文已影响0人
writeanewworld
@Time 2018-5-17
1.回调函数:
首先我知道的传统异步编程中异步的解决方案只有回调:
比如这样: 这里的函数B是当做一个参数放在了主函数A中,当调用A传参B时,会先执行A函数体中的console.log,然后延时3秒后输出了“这里是回调函数”(报错不用在意,因为没打开编译器,在浏览器上随手写了一下)

再例如回调函数含参的时候:
主函数A中进行了加法计算,然后c值是在回调函数中alert出来的
//IIFE
(function(){
function A(a,b,callback){
c=a+b;
callback(c);
}
function B(para){
setTimeout(()=>{alert(c)},3000);
}
A(1,2,B);
}())
2.Promise
为了更好的解决"回调地狱"问题,通俗的说也就是回调一层一层嵌套。Promise最早产生于一个社区,最后被加入了ES6中。
首先ES6规定,Promise对象是一个构造函数,专门用来生成promise实例,Promise构造函数接收俩参数resolve,reject,代表成功和失败,执行结束后回将异步操作的结果作为参数传递出去resolve(value) ,reject(error).
举一个栗子:
function timeout(time){
const promise = new Promise((resolve,reject)=>{
setTimeout(resolve,time,'done')
});
return promise;
}
timeout(100).then((value)=>{
console.log(value);
},(error)=>{});
//这个error可以省略
这只是我的初步理解
具体想详细理解可以看大佬的 http://es6.ruanyifeng.com/#docs/promise