Promise返回的undefined数组

时间:2018-01-09 02:56:41

标签: javascript node.js promise

我正在使用Node.js,这是代码:

const { exec } = require('child-process-promise');

const app = new App();

const isLine = (line) => {
    line = line.split(' ');
    return !Number.isNaN(Date.parse(line[0]));
};
const formatLine = (line) => {
    line = line.split(' ');
    return [line[0], line[1], line.splice(2).join(' ')];
};
const readLog = app => app.client.getMainProcessLogs()
    .then(logs => logs.filter(isLine).map(formatLine));

const printLogs = (logs) => {
    logs.forEach((log) => {
        console.log('\t\x1b[33m%s \x1b[34m%s\x1b[0m', log[0], log[1], log[2]);
    });
}

exec('xdotool key XF86AudioPlay')
.then(() => readLog(app))
.then((log) => {
    assert.equal(log[0][2], 'Media key pressed: \'Play\'');
    printLogs(log);
});

这是一些上下文,一旦exec被执行,我正在尝试运行readLog,它将尝试从输出中读取日志,返回一个二维数组(在过滤和格式化之后) ,将用于断言它的有效性并打印日志。

问题在于,有时候,我会收到一个错误:TypeError: Cannot read property '2' of undefined,根据我的理解,这意味着某个地方会出现竞争状况。 assert语句中抛出错误。再一次,这种情况继续发生,因此很难再现。

我做错了什么?我读过We have a problem with promises by Nolan Lawson,我觉得我已经遵循了所有建议。在每个then内返回,始终是Promise或同步值(已过滤和格式化的日志数组)。

0 个答案:

没有答案