Tho*_*ang 0 javascript node.js
基本上我想要这样的东西(现在肯定不行).我完成res.send()后可以使用事件来实现client.get()吗?
var events = require('events');
var eventEmitter = new events.EventEmitter();
var response = {};
var ids = [...];
for (id in ids) {
this.client.get(id1, function(err, obj) {
if (!err) {
response[id.toString()] = obj;
}
});
}
res.send({
response
});
Run Code Online (Sandbox Code Playgroud)
使用
Promise.all,Promise.all(iterable)方法返回一个promise,该promise在迭代参数中的所有promise已经解析时解析,或者拒绝第一个传递的拒绝的promise.
var events = require('events');
var eventEmitter = new events.EventEmitter();
var response = {};
var ids = [...];
var promiseArr = [];
for (id in ids) {
var prom = new Promise(function(resolve, reject) {
this.client.get(id1, function(err, obj) {
if (!err) {
response[id.toString()] = obj;
resolve();
}
});
})
promiseArr.push(prom);
}
Promise.all(promiseArr).then(function() {
res.send({
response: response
});
})Run Code Online (Sandbox Code Playgroud)
注意:由timster评论,使用时考虑浏览器支持Promise object,Polyfill会有所帮助!
| 归档时间: |
|
| 查看次数: |
45 次 |
| 最近记录: |