前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Promise 常用API

Promise 常用API

作者头像
奋飛
发布2019-08-15 09:56:19
8850
发布2019-08-15 09:56:19
举报
文章被收录于专栏:Super 前端Super 前端

1. Promise#then

代码语言:javascript
复制
promise.then(onFulfilled, onRejected);

示例:Promise#then

代码语言:javascript
复制
var promise = new Promise(function(resolve, reject) {
    resolve("传递给then的值");
});
promise.then(function(value) {
    console.log(value);
}, function(error) {
    console.error(error);
});

这段代码创建一个promise对象,定义了处理onFulfilled和onRejected的函数(handler),然后返回这个promise对象。这个promise对象会在变为resolve或者reject的时候分别调用相应注册的回调函数。 (1)当handler返回一个正常值的时候,这个值会传递给promise对象的onFulfilled方法。 (2)定义的handler中产生异常的时候,这个值则会传递给promise对象的onRejected方法。

2. Promise#catch

代码语言:javascript
复制
promise.catch(onRejected); 

等价于promise.then(undefined, onRejected) 的语法糖。 示例:Promise#catch

代码语言:javascript
复制
var promise = new Promise(function(resolve, reject) {
    resolve("要传递给then的值");
});
promise.then(function(value) {
    console.log(value);
}).catch(function(error) {
    console.log(error);
});

3. Promise.resolve

代码语言:javascript
复制
Promise.resolve(promise);
Promise.resolve(thenable);
Promise.resolve(object);

示例:Promise.resolve

代码语言:javascript
复制
var taskName = "task1";
asyncTask(taskName).then(function(value) {
    console.log(value);
}).catch(function(error) {
    console.error(error);
});
function asyncTask(name) {
    return Promise.resolve(name).then(function(value) {
        return "Done! " + value;
    })
}

根据接收到的参数不同,返回不同的promise对象。 (1)接收到promise对象参数的时候:返回的还是接收到的promise对象 (2)接收到thenable类型的对象的时候:返回一个新的promise对象,这个对象具有一个 then 方法 (3)接收的参数为其他类型的时候(包括JavaScript对或null等):返回一个将该对象作为值的新promise对象

4. Promise.reject

代码语言:javascript
复制
Promise.reject(object)

示例:Promise.reject

代码语言:javascript
复制
var r = Promise.reject(new Error("error"));
console.log(r === Promise.reject(r));       // false

var r = Promise.resolve("test");
console.log(r === Promise.resolve(r));      // true

和 Promise.resolve不同的是,即使Promise.reject接收到的参数是一个promise对象,该函数也还是会返回一个全新的promise对象。

5. Promise.all

代码语言:javascript
复制
Promise.all(promiseArray)

示例

代码语言:javascript
复制
var p1 = Promise.resolve(1),
    p2 = Promise.resolve(2),
    p3 = Promise.resolve(3);
Promise.all([p1, p2, p3]).then(function(results) {
    console.log(results);       // [1, 2, 3]
});

生成并返回一个新的promise对象。 参数传递promise数组中所有的promise对象都变为resolve的时候,该方法才会返回, 新创建的promise则会使用这些promise的值。 如果参数中的任何一个promise为reject的话,则整个Promise.all调用会立即终止,并返回一个reject的新的promise对象。

6. Promise.race

代码语言:javascript
复制
Promise.all(promiseArray)

示例

代码语言:javascript
复制
var p1 = Promise.resolve(1),
    p2 = Promise.resolve(2),
    p3 = Promise.resolve(3);
Promise.all([p1, p2, p3]).then(function(results) {
    console.log(results);       // 1
});

生成并返回一个新的promise对象。 参数 promise 数组中的任何一个promise对象如果变为resolve或者reject的话, 该函数就会返回,并使用这个promise对象的值进行resolve或者reject。

参考地址:JavaScript Promise迷你书(中文版)

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016年05月19日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. Promise#then
  • 2. Promise#catch
  • 3. Promise.resolve
  • 4. Promise.reject
  • 5. Promise.all
  • 6. Promise.race
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档