Monthly Archives: 五月 2017

Hello World

搞定异步编程(二)——使用Promise管理并行程序

也算是延续三年前的一个系列,这里实测一下ES6新出的Promise对nodejs的异步编程有多大改观
还是沿用三年前那篇文章的场景,连续访问三个http接口,然后对三个结果做综合处理
话不多说,上代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
var _http = require('./lib/http.js');
//对使用Promise做异步操作的封装,需要返回Promise对象,且成功回调resolve,出错回调reject
function testg(url){
    return new Promise((resolve, reject)=>{
        _http.get(url, {}, (retu)=>{
            console.log('Promise, retu, resolve', url);
            resolve(retu);
        }, (er)=>{
            console.log('Promise, er, reject');
            reject(er);
        });
    });
}
Promise.all([
    testg('https://www.baidu.com'), //一次调用三个异步请求
    testg('https://www.qq.com'), 
    testg('https://www.sina.com')
]).then((retu)=>{
    //三个异步请求的成功回调结果,封装在retu数组里
    console.log('Promise.all, retu', retu[0].length, retu[1].length, retu[2].length);
}).catch((er)=>{
    console.log('catch, er');
});

——–
转载请注明出处:http://www.jiangkl.com/2017/05/nodejs_promise