javascript 当一个函数只需要解析一个承诺,而另一个函数需要解析所有承诺时,如何控制js承诺流?

flvlnr44  于 2023-03-16  发布在  Java
关注(0)|答案(1)|浏览(93)

我有两个Web服务端点,我正在尝试履行承诺。我需要完成的是,一旦endpoint 1完成,我需要加载一些组件,一旦endpoint 1和endpoint 2都完成,我需要加载一些其他组件。我希望两个请求同时发送,但在第一个完成时运行一些代码,在所有请求完成时运行一些其他代码。
端点1-〉函数1
端点1+端点2-〉函数2
我使用axios作为web服务请求库。
我试过了

Promise.all([axios.get(endpoint1), axios.get(endpoint2)]).then(...)

但这将等待两个端点都返回,然后我才能继续强制代码的一个分支进行不必要的等待用途:

axios.get(endpoint1).then(...)

但我不知道如何确保这两个问题都能被另一个代码分支解决,我可以通过发送两次endpoint 1请求(一次使用Promise.all,一次单独发送)来让它工作,但这似乎不太优雅,有更好的方法吗?

py49o6xq

py49o6xq1#

你可能喜欢;

let p1 = axios.get(endpoint1),
    p2 = axios.get(endpoint2);

p1.then(function1);
promise.all([p1,p2])
       .then(function2);

显然function2(...rs)可以访问p1p2的分辨率。

相关问题