Promise

Promise 笔记
参考

介绍

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
var promise = new Promise(function(resolve, reject) {
// 异步操作的代码

if (/* 异步操作成功 */){
resolve(value);
} else {
reject(error);
}
});

promise.then(function(value) {
// 成功
}, function(value) {
// 失败
})
.catch(function(err){
// 失败
});

一个简单的promise 例子

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function generateRandomNumber () {
return new Promise(function (resolve, reject) {
var randomNumber = Math.floor((Math.random() * 10) + 1)
if (randomNumber <= 5) {
resolve(randomNumber)
} else {
reject(randomNumber)
}
})
}

generateRandomNumber().then(function(result) {
console.log('Success: ' + result)
}).catch(function(error) {
console.log('Error: ' + error)
})

链式

throw

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
var promise = new Promise(function(resolve, reject) {
// 异步操作的代码

if (/* 异步操作成功 */){
resolve(value);
} else {
reject(error);
}
});

var promise2 = promise.then(function(value) {
// 如果在这里要抛出失败的话用的方法是:
// throw ERROR_NAME;

// 成功
return value
})
.catch(function(err){
// 不要用 "return" 这样会被下一个 .then 接收, 而不是 .catch

// 失败
throw err;
});

promise2.then(function(result){
// 成功
})
.catch(function(result(err){
// 失败
})