对于ES6中的Promise,我们来看一下它是一个对象还是一个函数?
handler_func(){ console.dir(Promise) }
可以看到,它是一个构造函数,身上有then、catch和原型链上的resolve、reject等这些函数
既然是构造函数,那么就可以使用new来创建对象,且作为构造函数,它是接收一个函数作为参数,如下:
const p = new Promise(function(resolve,reject))
那么作为参数的函数传进去有什么用呢?
可以做一些比如网络请求的异步操作:
var p = new Promise(function(resolve, reject){ setTimeout(function(){ console.log('执行完成'); resolve('一些数据'); }, 3000); }
一般网络请求,我们是放在一个自定义的事件触发函数里的,比如点击了一个按钮,就会触发事件函数:clickEvent()
clickEvent(){ var p = new Promise(function(resolve, reject){ setTimeout(function(){ console.log('执行完成'); resolve('一些数据'); }, 3000); } return p; }
调用这个函数:
clickEvent().then(function(data){ console.log(data) })
打印结果:一些数据
文章评论