如何在JavaScript中等待多个请求?

时间:2018-09-30 03:53:52

标签: javascript promise async-await

我有以下内容:

extension ObservableType {

    /**
     Filters the source observable sequence using a trigger observable sequence producing Bool values.
     Elements only go through the filter when the trigger has not completed and its last element was true. If either source or trigger error's, then the source errors.
     - parameter trigger: Triggering event sequence.
     - returns: Filtered observable sequence.
     */
    func filter(if trigger: Observable<Bool>) -> Observable<E> {
        return self.withLatestFrom(trigger) { ($0, $1) }
            .filter { $0.1 }
            .map { $0.0 }
    }
}

如您所见,我首先验证令牌,然后返回所有用户。在这里,我使用了两个async fetch() { const res = await axios.get('/api/validate/randomtoken') if(res.exists) { await axios.get('/api/users') } }

根据以下问题:How run async / await in parallel in Javascript,我应该使用await。但是,问题是我需要强制检查Promise.all(),所以我想我不能使用res.exists

我只是想知道我当前使用的方法是否正确,如果可能的话,我在这里如何使用Promise.all()

2 个答案:

答案 0 :(得分:2)

  

我只是想知道,如果我当前使用的方法   是对的还是可能的,如果可能的话,我该如何使用Promise.all()   这里?

您当前使用的方法是正确的!

我们看到,您的应用程序逻辑必须按顺序执行。

首先,验证令牌

如果令牌有效,则允许访问服务器资源(即用户列表)。

如果您使用Promise处理这些异步操作,则还需要链接这些promise以实现应用程序逻辑。

答案 1 :(得分:0)

您正在做的事情看起来很适合您遇到的问题。但是,当您需要在链中进行的活动数量增加时,链会变得很麻烦。

在这种情况下,您也可以尝试异步瀑布。 https://caolan.github.io/async/docs.html#waterfall