我同时在节点ExpressJS中多次调用相同的路由URL,然后一个请求的值将覆盖另一个请求。

喜欢:

api/getdata/12
api/getdata/15


这里ID 12的数据进入请求ID 15中,

第一个请求具有如下循环:

var result= [];
if(activityResult && activityResult.status!="error"){

   for (activity of activityResult) {
    var dataList = await somefunction(activity);
    result.push(dataList);

  }
}

最佳答案

await,没有按照您的想法做。您将需要一些更高级的东西。尝试这个:

const results = async () => {
  if ( activityResult && activityResult.status !== "error" ) {
    return Promise.all(
      activityResult.map( activity =>
        return new Promise( async ( resolve, reject ) => {
          try {
            const resolvedActivity = await someFunction( activity )
            resolve( resolvedActivity )
          } catch ( error ) {
            reject( error )
          }
        })
      )
    )
  }
  return []
}


这样,您将所有结果放在一个数组中。 Promise.all还将使所有请求“一次”发生。

我没有测试此代码,但是它应该是您想要的。

关于node.js - ExpressJS同一条路线同时被多次击中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56029080/

10-11 09:32