2017-07-15 15 views
2

私のコマンドが完了したら、プロセスを終了(または終了)したいと思います。私はこのコードを持っていますが、プロセスはただちに終了します。node.jsでコマンドを実行した後にプロセスを終了させよう

var gplay = require('google-play-scraper'); 

gplay.list({ 
    category: gplay.category.GAME_ACTION, 
    collection: gplay.collection.TOP_FREE, 
    start: 0, 
    num: 120 
    }) 
    .then(console.log, console.log); 

gplay.list({ 
    category: gplay.category.GAME_ACTION, 
    collection: gplay.collection.TOP_FREE, 
    start: 120, 
    num: 120 
    }) 
    .then(console.log, console.log); 
process.exit(); 

私は、ファイルに出力を書きたいので、私は、node script.js > output.txtことによって、これを実行します。私は他の方法を知らない。

+1

のために戻りました。 exit()行は、両方の呼び出しが完了すると自動的に終了するはずです。また、コンソールにロギングするのではなく、fsを使ってファイルに自動的に書き込むことができます(実際にはプロジェクトの範囲と再利用の必要性に依存します) – JonLuca

+0

プロセスは 'process.exit()'文のために終了します。保留中のすべてのコールが完了したら、プロセスを削除するだけでプロセスは終了します。 –

+0

@JonLucaコンソールにログする代わりに書き込みを使用する方法を知らない –

答えて

0

あなたはPromise.all

これは、反復可能な引数に約束のすべてが解決した場合、または反復可能な引数は何の約束が含まれていないときに解決する一つの約束を返すを使用することができます。それは拒絶するという最初の約束の理由で拒否する。

コールバックdisplayThenExitは結果が表示されます、ノードのプロセスを終了

var gplay = require('google-play-scraper'); 

var p1 = gplay.list({ 
    category: gplay.category.GAME_ACTION, 
    collection: gplay.collection.TOP_FREE, 
    start: 0, 
    num: 2 
    }) 

var p2 = gplay.list({ 
    category: gplay.category.GAME_ACTION, 
    collection: gplay.collection.TOP_FREE, 
    start: 2, 
    num: 2 
    }) 
var displayThenExit = function(result){ 
    console.log(result); 
    process.exit(0); 
} 

Promise.all([p1, p2]).then(displayThenExit, console.log); 

PS:私はエントリの数を制限するnum: 2を設定するだけで、プロセスを削除し、テスト目的

+0

あなたの助けを借りて@タハ!それは動作しますが、私はp1 ... p36変数を持っているときに何ができますか? –

+0

p1..p5のみ受け入れる –

+0

@ J.Doe:おそらくGoogle Playのスロットル制限を超えている可能性があります。 https://github.com/facundoolano/google-play-scraper#throttling – taha

0

JavaScriptは性質上非常に非同期です。つまり、最初の関数呼び出しを呼び出した後すぐに次の文に移動します。あなたの場合、2つの可能な方法があります:

  1. 最初の呼び出しのthen()の中に次の行を置き、exit()を2番目の呼び出しのthen()ブロックの中に置きます。
  2. 非同期の使用https://caolan.github.io/async/
  3. または単にexit()を削除します。
+0

プロセスがハングしますin the air "を削除したときprocess.exit() –

+0

この場合、1または2のどちらかが動作するはずです。私は第二のものを使用します –

関連する問題