在forEach迭代数组后发送响应(使用回调?)
Sending a response (using a callback?) after a forEach iterates over an array
我多次保存到数据库,然后我想res.send(people.json)。我试了"then"answers"call"。我不确定我这样做对不对……因为它总是破坏应用程序。我如何在forEach完全迭代后发生一些事情?
people.forEach(saveRequest).call(res.json(people)); // TypeError: Cannot read property 'call' of undefined
people.forEach(saveRequest).then(res.json(people)); // TypeError: Cannot read property 'then' of undefined
假设我们谈论的是Array.prototype.forEach()
。如果是这样,则在people.forEach(saveRequest);
完成后执行res.json(people)
:
people.forEach(saveRequest);
res.json(people);
Array.prototype.forEach()
是同步的,但是函数saveRequest
可能是同步的,也可能不是。你在问题中提供的信息,我们没有办法知道。如果saveRequest
是同步的,那么在people
数组中的每个值执行完saveRequest
后,res.json(people)
将被执行。如果saveRequest
是异步的,那么将对people
数组中的每个值启动异步操作,但不太可能在res.json(people)
时间之前完成所有操作。如果saveRequest
是异步的,那么问题中提供的信息不足以让我们推荐在所有操作完成后执行res.json(people)
的方法。
假设saveRequest
是异步的,并且返回一个由一个人完成的承诺,使用Promise.all
:
Promise.all(people.map(saveRequest))
.then(people => res.json(people))
相关文章:
- 如何收集所有发射回调的所有响应
- jQuery post,访问responseType或回调中的响应
- node.js+MySQL;JSON结果-回调问题&没有响应客户端
- 可以't从回调函数内部访问响应
- 回调返回响应,但当在API中发送时,响应在节点JS中显示为空白
- 挂起的回调:在每次回调返回之前返回响应
- Node.JS-如何识别哪个异步HTTPGET响应在回调中返回数据
- 具有一个响应的多个回调-Node JS
- React native:如何将参数传递给手势响应程序回调
- POST 响应未等待回调完成
- Facebook Javascript SDK 响应回调未触发
- GreaseMonkey 和 JQuery AJAX 响应不会以任何形式在回调中幸存下来
- 如何为每个 AJAX 请求/响应事件添加回调
- 节点.js如果我使用 process.send(),请等待回调/响应
- 如何在angularjs中使用factory在GPS检测器函数内部使用$http.post方法时获得回调响应
- 如何在ejb中处理回调响应
- 如何传递javascript回调响应到php
- 向数组添加多个回调响应
- Backbone.Wreqr 请求-响应处理程序的回调响应/状态(完成后)
- Strophejs获得花名册成功回调响应