如何在节点js中存储回调

时间:2017-12-27 15:46:22

标签: javascript node.js asynchronous mongoose callback

function getChild2 (user, userid, level, callback) {
User.find({ 'parentId': new mongoose.Types.ObjectId(userid), 'active': true },
    { "_id": true, "firstName": true,"lastName": true,"userId": true,"rightLeg": true,"leftLeg": true, "userName": true, "children": true, "activePackage": true, "type": true, "styleClass": true, "expanded": true }).
            sort({ 'created': -1 }).exec(function (err, users) {
    if (err) {
      console1.error('Error:User:Read: ' + errorHandler.getErrorMessage(err));
    } else {
      console1.log('Log:User:Read: user network response ' + JSON.stringify(users));
      user.children.push(users);
      users.forEach(function (val, i) {
        console.log('getchild2 ' + val._id);
        getChild2(val, val._id, level+1, null);
      });
      if (users.length === 0)
     {
       callback(user);
}
    }
});

我需要在users.length === 0时使用回调但是在我的迭代中我将回调设为null,即在循环结束时回调变为null,然后它表示错误回调不是函数。然后我想到最初将回调函数存储在一个变量中。

if (callback !== null) {
      toCall = callback;
}
 then...
if (users.length === 0 ) {
    toCall(users);
}

现在它说toCall不是一个函数。任何人都可以帮我解决这个问题。谢谢。

0 个答案:

没有答案