【发布时间】:2014-11-25 17:52:55
【问题描述】:
我将 Node.js 与 cheerio(Node.js 上的 jQuery 模块)和 fetch(用于获取 HTML 正文的模块,如 request)一起从网站获取一些数据并保存到 MongoDB。
我可以在浏览器中选择像jQuery这样的元素
我必须得到一些data 并将data 传递给callback 函数,例如:
var data = "";
var fetchById = function(id, callback){
var data = $("#"+id).parent().siblings(".someClass").text().replace(/\s/g, ""); // line 3
callback(null, data);
};
然后……
fetchById(10987, function(err, data){
if(err){
// errorHandle(err);
}else{
// db.save(data);
}
});
但有时callback在第3行成功检索到data之前被调用,因此,data是一个空字符串""
如何确保在第 3 行完成后调用 callback?
【问题讨论】:
-
javascript runes 是线性的,它不应该在第 3 行完成之前运行 'callback',唯一的例外是异步调用,看起来不像这里的情况。
-
我希望您已经这样做了,但我们必须确定...您是否检查过只有您的
fetchById函数调用了 taht 回调?并且唯一的调用是由您当前正在调试的上下文进行的? -
在该回调中没有进行其他调用。如前所述,有时我通过 jQuery 方法成功获取数据,有时失败......所以我认为唯一的原因是,第 3 行每次调用需要不同的时间长度
标签: javascript jquery node.js