promise用法

原本层层嵌套改为多个then和catch连写的方式

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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
var  request = require('request');
var url = "'http://httpbin.org/get'";

function test(url) {
// 语法检查
"use strict";

return new Promise(function(resolve,reject){
request(
url,
function(err, response, body){
if(!err && response.statusCode == 200) {
resolve(body);
}else {
reject(err);
}
}
);
});
}



test('http://httpbin.org/get')
.then(function(value){
return value;
})
.then(function(value){
// console.log(22222);
// console.log(value);
})
.catch(function(value){

});




//语法糖方式

var prom = Promise.resolve(

//返回的是promise对象,这里远程get方式无法调用
request(url,function(err, response, body){})
);

prom.then(function(value){
// console.log(value.uri);
});

// 只要抛错误就直接调用catch
function task1() {
console.log('task1');
throw new Error('error test');
}
function task2() {
console.log('task2');
}
function err() {
console.log('err');
}
var prom = Promise.resolve('aaaaa');
// prom.then(task1).then(task2).catch(err);