Promise基本用法

148 阅读1分钟

Promise含义

  • Promise是异步编程的一种解决方案, 比传统的解决方案--回调函数和事件--更合理更强大。
  • 所谓的promise简单来说就是一个容器,里面保存着未来才会结束的事件,它有两个特点(1)对象的状态不受外界影响。(2)一旦状态改变就不会再变,任何时候都可以得到这个结果

基本用法

Promise.prototype.then()

  • then方法返回的是一个新的Promise实例(注意,不是原来的Promise实例),因此可以采用链式写法,即then方法之后在调用另一个then
getJSON("/posts.json").then(function() {
    return json.post;
}).then(function(post) {
    // ...
});

Promise.prototype.catch()

  • Promise.prototype.catch方法是.then(null, rejection)或.then(undefined, refjection)的别名,用于指定发生错误时的回调函数
getJSON('/posts.json').then(function(posts) {
    // ...
})catch(function(error) {
    // 处理getJSON 和前一个回调函数运行时发生的错误
    console.log('放生错误!', error);
});

Promise.prototype.finally()

  • finally 方法用于指定不管Promise对象的最后状态如何,都会执行的操作,该方法是ES2018引入的标准
promise.then(result => {...})
	   .catch(result => {...})
	   .finally(() => {...})
       
       
       
server.listen(port).then(function() {
    // ...
}).finally(server.stop)
  • finally 方法的回调函数不接受任何参数,因此这意味着没有办法知道前面的Promise状态是fulfiled还是rejected。这表明,finally方法里执行的操作,应该与状态无关,不依赖与promise的执行结果

Promise.all()

  • Promise.all方法将多个Promise实例包装成一个Promise实例
const p = Promise.all([p1, p2, p3]);