javascript - promise的用法

查看:101
本文介绍了javascript - promise的用法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

疑惑1:

程序大部分的调用链是这样的:

promise.then(A).then(B).then(C).then(D)

但是B满足某种条件,需要这样调用:

promise.then(A).then(B).then(C1).then(C2).then(D)

这种情况该怎么做?


新的说明:

这个条件并不是在外围可以确定的

例如:


// 并不可以这么做。state必须在B函数执行完之后才能确定
if(state){
  promise.then(A).then(B).then(C1).then(C2).then(D)
}else{
  promise.then(A).then(B).then(C).then(D)
}

疑惑2:

如何在循环中使用promise?

解决方案

疑惑1

修正:

promise
    .then(A)
    .then(B)
    .then(function(state){
        if(state){
            return C1.then(C2);
        }
        return C;
    })
    .then(D);

好像也不算帅,期待更屌的实现

疑惑2

如果发生在循环里,譬如:对一个数组进行遍历,对每一元素处理的结果都是一个Promise,可以这样写:

var userIds = ['aaa', 'bbb', 'ccc'];

//这里getUserById返回的是Promise
var promises = arr.map(userIds => getUserById(userId));

Promise
    .all(promises)
    .then(function(users) {
        console.log(users); //这里就是users的列表了
    });

这篇关于javascript - promise的用法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆