2017-06-08 8 views
0

私は検索クエリ機能をインポートし、次のコードインポートされた関数が完了するまでに時間がかかる場合、nodeJSのrequireからstringをインポートする方法はありますか?

var match_all = require('./match_all');                                                   
var data=match_all.func();                                                      
console.log('uo yoyo');                                                       
console.log(data); 

次のようにMatch_allがある呼び出し午前:私は私の以前のjsプログラムを実行するとき

var string_of_da;                                                        

//a function which queries for all pid and syscalls                                                
var string = function(){                                                      
var client = new elasticsearch.Client({                                                   
     ..... 
    }) 

//queries to ES                                                         
function getmeres(client,syscall){                                                    
     client.search({                                                       
     ........                                                       

},function (error,response) {                                                     
     .......                                                        
showdocs(d)                                                          
}                                                            
});                                                            
}                                                                                                          
function showdocs(d){                                                       
var da = d["hits"]["hits"].map(function(i){                                                  
     return i['_source'];                                                     
});                                                            
string_of_da = JSON.stringify(da,null,'\t');                                                 
}                                                            
return string_of_da;                                                       
};                                                            
module.exports.func = string; 
module.exports.string = string_of_da; 

は今、それが適切に照会しますが、match_all.func()が呼び出される前に、 stringを返し、console.logが呼び出されます。だから私の出力は...

未定義

UOヨーヨー... elasticsearch検索ログのように見えます

は間違ってここで何が起こっていますか?

答えて

1

コールバックを使用しているため、コールバック作業は非同期です。したがって、console.logがfirst.inを非同期に出力しているので、応答を得るまで待たないでください。コールバックは、関数の非同期式です。コールバック関数は、与えられたタスクの完了時に呼び出されます。ノードはコールバックを大量に使用します。 NodeのすべてのAPIは、コールバックをサポートするように記述されています。

+0

ありがとうございます。私はコールバックと呼ばれるパラメータを渡さなければならなかったと私のデータをこのコールバック関数に与える必要があることがわかります。ありがとうたくさん – Vintux

+0

問題なし:)素晴らしい –

関連する問題