Node.js:等待异步调用的响应
Node.js: wait for the response from an async call
我正在开发一个API,通过它我应该可以添加一个用户列表作为JIRA观察者(所以我正在与JIRA REST API对话)
以下是实现这一点的功能:
for (var i = 0; i < votes.totalValue; i++) {
var voter = {
user : votes.rawVoteData[i].user,
value : votes.rawVoteData[i].value,
email : votes.rawVoteData[i].email,
fname : votes.rawVoteData[i].fname,
lname : votes.rawVoteData[i].fname
};
// Add these users as watchers to the Jira
jira.jira.addWatcher(issueId, voter.user, function(err, result){
// TODO: Return to callback
rep++;
console.log('user='+voter.user);
console.log(result);
});
}
投票对象具有上面显示的用户列表。现在的问题是,当我执行这个函数时,由于节点的异步性质,for循环会被完全执行,然后所有的异步调用都会同时启动。(这对我来说不起作用,因为JIRa REST API似乎不支持这一点)
我想更改上面的代码,以便每次为一个用户调用addWatcher函数&只有在上一个异步调用已经返回的情况下,才为下一个用户进行下一个addWAtcher调用(即,为每个用户逐个转到下一个异步呼叫,而不是一次向addWAtcher调用所有调用。)
我该怎么做?
请告知,
谢谢!
您应该看看async
模块。
您可以使用async.each()
函数。该函数接受一个项数组,然后通过调用一个包装函数对其进行迭代,该包装函数接受该项作为参数。当所有调用完成后,您可以指定要调用的最后一个函数。另一个解决方案可以是async.parallel()
(以防您不介意并行运行它们。
归功于这个伟大的教程
相关文章:
- Ajax调用在Firefox中不会自动响应
- 在Javascript中的ajax响应之后未调用Dropdown事件
- 调用Ajax并返回响应
- 如何放置单独的ajax调用,使页面的一部分完全响应,而另一部分仍在加载
- 在JavaScriptAjax调用中从web服务中的XMLDocument获取响应.
- 使用嵌套AJAX调用的响应填充数组
- 在SPRING中从ajax调用响应时显示不可接受错误
- 如果从onclick()内部调用app.open,则它没有响应
- ajax调用:响应<->数据类型
- jQuery验证,在继续之前等待服务调用响应
- jQuery:点击禁用点击事件,直到ajax调用响应
- 从 Greasemonkey 到 Servlet 的 Ajax 调用:响应失败
- AJAX 调用响应文本为空
- 如何检索 java 设置并迭代来自 ajax 调用响应的值
- ajax调用响应被转发到浏览器上的新html页面
- AngularJS HTTP调用/响应
- ajax成功中的广告调用响应包含document.write
- PHP::2 AJAX调用::2响应::按顺序
- Javascript对象方法分配ajax调用响应失败
- 通过jqXhr访问Ajax调用响应PHP