我同时在节点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/