sir*_*one 4 arrays asynchronous callback node.js
我对这种类型的编程很新,我在嵌套调用中填充数组时遇到了一些麻烦.我很确定这需要使用回调来完成,但是我在绕着它缠绕脑子时遇到了麻烦.关闭也必须在这里发挥作用.我尝试在网上搜索类似的例子,但没有找到太多.
这是我的原始代码.我尝试了一些不同的方法,但没有把它拉下来.
TaskSchema.statics.formatAssignee = function(assignees) {
var users = [];
assignees.forEach(function(uid) {
mongoose.model('User').findById(uid, function(err, user) {
users.push({
name: user.name.full
, id: user.id
});
});
});
return users;
}
Run Code Online (Sandbox Code Playgroud)
我非常喜欢以下模式(递归是异步循环最优雅的解决方案):
TaskSchema.statics.formatAssignee = function(assignees, callback) {
var acc = []
, uids = assignees.slice()
(function next(){
if (!uids.length) return callback(null, acc);
var uid = uids.pop()
mongoose.model('User').findById(uid, function(err, user) {
if (err) return callback(err);
acc.push({
name: user.name.full
, id: user.id
});
next();
});
})();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9571 次 |
| 最近记录: |