promise是一个构造函数,本身有all、reject、resolve用法。原型有then、catch方法。下面来讲个实例方法。
var a = new Promise(function(resolve,reject){
//进行异步操作
setTimeout(function(){
console.log('HelloWorld');
resolve('你好世界!');
}, 2000);
});
Promise的构造函数接收一个参数,是函数,并且传入两个参数:resolve,reject,分别表示异步操作执行成功后的回调函数和异步操作执行失败后的回调函数。其实这里用“成功”和“失败”来描述并不准确,按照标准来讲,resolve是将Promise的状态置为fullfiled,reject是将Promise的状态置为rejected。不过在我们开始阶段可以先这么理解,后面再细究概念。
在上面的代码中,我们执行了一个异步操作,也就是setTimeout,2秒后,输出“执行完成”,并且调用resolve方法。
运行代码,会在2秒后输出“执行完成”。注意!我只是new了一个对象,并没有调用它,我们传进去的函数就已经执行了。我们用Promise的时候一般是包在一个函数中,在需要的时候去运行这个函数,如:
function async(){
var a = new Promise(function(resolve, reject){
//做一些异步操作
setTimeout(function(){
console.log('执行完成');
resolve('HelloWordl');
}, 1000);
});
return a;
}
async()
在我们包装好的函数最后,会return出Promise对象,也就是说,执行这个函数我们得到了一个Promise对象,另外,promise上还会有then和catch的方法。在写一段代码:
async().then(function(data){
console.log(data);
});
在async()的返回上直接调用then方法,then接收一个参数,是函数,并且会拿到我们在async中调用resolve时传的的参数。运行这段代码,会在2秒后输出“执行完成”,紧接着输出“HelloWorld”
网友评论