如何在完成任务时调用函数

时间:2014-03-13 03:21:46

标签: javascript jquery node.js mongodb express

我试图在查询完成时这样做,data数组已满,然后它应该执行res.send()部分。

此代码当前失败 - sendData函数在查询完成之前运行:

function showPostsOnPage(pageNumber, nPerPage) {
  funnyPosts.find().skip((pageNumber-1)*nPerPage).limit(nPerPage).each( function(err, post) {
    data.push(post);
  });
  sendData(data);
}

function sendData(data) {
  res.send(
    { msg: '', data: data } // Alerts empty on the client side.
  );    
}

在客户端,我使用:

var pageNumber = {
  'pageNumber': 30
};

$.ajax({
  type: 'POST',
  data: pageNumber,
  url: '/nextHomeImages'
}).done(function( response ) {
  if (response.msg === '') {
    alert(response.data);
  } else {
    console.log('Error: ' + response.msg);
  }
});

1 个答案:

答案 0 :(得分:0)

我注意到了关键字each,我将其作为jQuery跳转。

据说有一个有限的长度。我会做类似的事情:

var len;
function showPostsOnPage(pageNumber, nPerPage) {
  var _posts = funnyPosts.find().skip((pageNumber-1)*nPerPage).limit(nPerPage);
  len = _posts.length;
  _posts.each( function(err, post) {
    data.push(post);
    len --;
    if (len <= 0) sendData(data);
  });
  //sendData(data);
}

function sendData(data) {
  res.send(
    { msg: '', data: data } // Alerts empty on the client side.
  );    
}