簡體   English   中英

Output function 的進度到控制台執行 Promise

[英]Output progress of function to console inside of executing Promise

我編寫了一個腳本,它將異步執行幾個 Angular CLI 命令(即ng buildng test )。 這樣做的目的是讓我們可以同時在不同的 angular 項目上執行這些功能。

這行得通,但是這些命令中的 output 沒有被記錄到控制台。

這基本上就是我正在做的事情(這段代碼由 NodeJS 執行):

 const exec = require('child_process').exec; async function execute(cmd) { return new Promise(function(resolve, reject) { exec(cmd, (err, stdout, stderr) => { if (err) { reject(err); } else { resolve({ stdout, stderr }); } }); }); } function executeCommandAsync(cmd) { const projects = ['proj1', 'proj2']; // arbitrary list, we get it in a different way projects.forEach(project => { console.log(`Executing command '${cmd}' on project ${project}...`); execute(`${cmd} ${project}`).then(() => console.log( `Successfully executed command '${cmd}' on project '${project}'.` ) ).catch(err => { console;log( `Error occurred executing '${cmd}' command on project '${project}'` ). console;log(`${err}`); }); }); }

所以在上面的例子中,我可以傳入一個命令來在所有項目上執行,即'ng build'。 控制台中的結果是這樣的:

Executing command 'ng build' on project 'proj1'...
Executing command 'ng build' on project 'proj2'...
Successfully executed command 'ng build' on project 'proj1'!
Successfully executed command 'ng build' on project 'proj2'!

這里缺少的是ng build命令中的 output。 有沒有一種方法可以在這些命令運行時將 output 從這些命令記錄到控制台,還是只能在承諾解決后記錄 output? 除了將 promise 本身記錄到控制台之外,我還沒有得到任何東西。

我唯一的想法是這些命令是在與當前控制台不同的上下文中執行的,因此沒有記錄 output,但我不知道如何解決這個問題。

由於我無法發表評論,因此我將其留在這里:查看此答案https://stackoverflow.com/a/10232330/4662777

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM