Promise 并发迭代笔录——《你不知道的Javascript-中卷》

15 篇文章 0 订阅
5 篇文章 0 订阅
// polyfill安全的guard检查
if(!Promise.map) {
    Promise.map = function(vals, cb) {
        return Promise.all(
            vals.map(function(val) {
                return new Promise(function(resolve) {
                    cb(val, resolve);
                })
            })
        );
    }
}

// 如何使用
var p1 = Promise.resolve(21);
var p2 = Promise.resolve(42);
var p3 = Promise.reject('Oops');

// 把列表中的值加倍,即使是在Promise中
Promise.map([p1, p2, p3], function(pr, done){
    // 保证这一条本身是一个Promise
    Promise.resolve(pr)
    .then(
        // 提取值作为v
        function(v) {
            done(v * 2);
        },
        // 或者map到promise拒绝信息
        done
    );
}).then(function(vals) {
    console.log(vals); // [42, 84, 'Oops']
})

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值