我有这个代码。
for(var i = 0; i< bookmarks.length; i++){
(function(i) {
parseArticle(i,bookmark_id,bookmark_url,function(err,result){
console.log("Success");
});
})(i);
}
function parseArticle(i,bookmark_id,bookmark_url,callback) {
diffbot.article({uri: url}, function(err, response) {
console.log("Diffbot is" );
});
console.log("Parse Article" );
callback(null,i);
};
现在输出是这样的
解析文章
成功
Diffbot 是
我想以这种方式执行函数,因此输出将类似于
差异机器人
解析文章
成功
谁能告诉我这里到底是什么问题以及如何解决
谢谢
最佳答案
您需要了解什么是异步函数及其完成回调。当您理解这一点时,您就会理解为什么首先打印“Parse Article”,并且会更好地了解应该如何构建代码。简而言之,异步函数启动一个操作(通常涉及计时器或网络或某种 I/O),然后代码的其余部分继续执行。然后,稍后一段时间,异步操作完成并调用完成回调。
使用异步操作的关键是,您希望在异步操作之后发生的所有事件以及您希望使用异步事件结果的所有事件都必须位于指示异步事件完成的回调内.
在您的特定情况下,您可以通过将内容放入 diffbot.article
回调中来实现所需的输出。这应该生成以下日志:
Diffbot
Parse Article
Sucess
function parseArticle(i,bookmark_id,bookmark_url,callback) {
diffbot.article({uri: url}, function(err, response) {
// put everything in here that should occur after the async
// operation is done
console.log("Diffbot is" );
console.log("Parse Article" );
callback(null,i);
});
};
关于javascript - Nodejs中的函数调用执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26710484/