在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 ,因为我想写输出到文件。 我不知道其他方法。

你可以使用Promise.all

它返回一个单独的Promise,它parsing了当iterable参数中的所有promise都解决了的时候,或者当iterable参数不包含promise的时候。 它拒绝了拒绝的第一个承诺的原因。

callbackdisplayThenExit将显示结果,然后退出节点进程

 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来限制为了testing返回的条目数

Javascript本质上是非常asynchronous的,这意味着在调用第一个函数调用之后,它将立即移动到下一个语句。 在你的情况下有两种可能的方法:

  1. 将下一行执行放入第一个执行的then()中,并将exit()放入第二个调用的then()块中。
  2. 使用asynchronoushttps://caolan.github.io/async/
  3. 或者干脆删除exit();