2016-03-09 44 views
1

射擊我有這個簡單的代碼這是一個承諾,你可以看到:Node.js的EXEC事件內部沒有承諾

var exec = require('child_process').exec; 

return new Promise(function(resolve, reject) { 

     var x = exec(`cd /maps && ls -la`, {}, function(err, stdout, stderr) { 

      if (err || stderr) { 

       reject(err + stderr); 
      } 

      resolve(stdout); 
      }); 

      x.stdout.on('data', function (data) { 
      console.log(data); 
      }); 
    }); 

on事件從來沒有發射,而如果我從周圍的一切刪除承諾工作

你有什麼線索嗎?

+0

嘗試將'resolve'移出回調函數,並在'console.log(data)'後面調用它。 – rob

+0

你是怎麼稱呼這個承諾的返回函數 – Darshan

+0

@Darshan'some.do()。then()。catch();' – sbaaaang

回答

1

嘗試將您的resolve移出回調函數,並在console.log(data)之後調用它。

原因可能是因爲你太早解決你的承諾。