0

我想在matlab中使用shelljs执行命令,并在完成向客户端发送响应后:

 var cmd = 'matlab -nojvm -nosplash -nodesktop -noFigureWindows  -minimize -r  \"  senario(); exit; \"';
     shell.exec(cmd, function (code, stdout, stderr) {
            console.log('matlab exit');
        });

我不知道如何获得响应,所以我让 matlab 使用 Code (Ok, Fail) 更改文件并使用fswatch观察它,我的目标是在更改后发送 200 状态,但在测试时抛出错误邮差。

  fs.watch("done.json", function (event, filename) {
    console.log(filename + ' file Changed ...');
        return res.status(200); // I want to Add the response here
    if (filename) {
        console.log('filename provided: ' + filename);
    } else {
        console.log('filename not provided');
    }
});

我知道这似乎不是这样做的好方法,但任何帮助

4

1 回答 1

0

我通过承诺 fs.watch 解决了这个问题

var Promise = require('bluebird');
var cmd = ['matlab -nojvm -nosplash -nodesktop -noFigureWindows  -minimize -r  \"  addpath(genpath(\''+ __dirname+'\\..\\uploads\')); '+ nameSenarioToExe+'(); exit; \"'];///
     shell.exec(cmd, function (code, stdout, stderr) {
            console.log('matlab exit');
        }); 
    var p = Promise.resolve(DistDir)
     .timeout(2000)
     .catch(console.error.bind(console, 'Failed to load config!'))
     .then( fs.watch(filedir, function(event, who) {
        if (event === 'rename' && who === filename) {
          if (fs.existsSync(filedir)) {
           res.send('OK');
          } 
        }
      }));
于 2017-08-12T19:16:48.650 回答