Javascript nodejs中的函数调用执行

Javascript nodejs中的函数调用执行,javascript,node.js,Javascript,Node.js,我有这个密码 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

我有这个密码

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);
};
for(var i=0;i
现在输出是这样的

分析文章

成功

Diffbot是

我想以这种方式执行函数,所以输出如下

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);
      });
};

您应该研究
异步
编程和
回调

for(var i = 0; i< bookmarks.length; i++){
  parseArticle(i,bookmark_id,bookmark_url,function(err,result){
    console.log("Success");
  });
}   

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); // this will call the success
  });
}
for(var i=0;i

尝试阅读。

好的。现在,你能告诉我解决这个问题的方法吗?我可以从哪里学习