
我用 Nodejs 写了一个 API 接口,用于请求指定数据。这个接口会请求三个其他的 API:
我的目的是同时(并发)请求上面这三个 API,然后汇总请求到的结果,返回给客户端。
请问这个可以实现吗,对 Nodejs 不懂?
1 hgjian 2020-08-20 10:26:55 +08:00 via Android promise.all ?好像可以 |
2 flowfire 2020-08-20 10:31:09 +08:00 await Promise.all([ fetch("url1"), fetch("url2"), fetch("url3"), ]) |
3 c6h6benzene 2020-08-20 10:39:13 +08:00 via iPhone 如果用包装好的包如 axios,可以用 axios.all([request1, request2, request3,...).then(axios.spread(response1, response2, response3) => {})。 |
4 coderxy 2020-08-20 11:00:26 +08:00 promise.all |
5 4196 2020-08-20 11:24:26 +08:00 不是 Nodejs 不懂的问题,你应该多去学下 js,特别是 es6+的 |
6 dfourc 2020-08-20 12:42:42 +08:00 1.回调嵌套 2.请求成功计数 3.promise.all |
7 buffzty 2020-08-20 15:48:46 +08:00 async ()=>{ const task1 = fetch1() const task2 = fetch2() const task3 = fetch3() // try catch const task1Resp = await task1 const task2Resp = await task2 const task3Resp = await task3 // logic } |
8 azcvcza 2020-08-20 15:58:17 +08:00 promise.all 建议里边包一层 promise,这样即使请求错误 promise.all 也不会挂掉往下走了 |
11 JaydenC 2020-09-21 11:52:45 +08:00 用这个就好了,总有你想要的流程控制方式 https://caolan.github.io/async/v3/docs.html#parallel async.parallel([ function(callback) { setTimeout(function() { callback(null, 'one'); }, 200); }, function(callback) { setTimeout(function() { callback(null, 'two'); }, 100); } ], // optional callback function(err, results) { // the results array will equal ['one','two'] even though // the second function had a shorter timeout. }); // an example using an object instead of an array async.parallel({ one: function(callback) { setTimeout(function() { callback(null, 1; }, 200); }, two: function(callback) { setTimeout(function() { callback(null, 2); }, 100); } }, function(err, results) { // results is now equals to: {one: 1, two: 2} 这里执行所有请求返回后的回调 }); |