回调未被调用

Callback isn't called

我使用以下代码,似乎没有调用回调(以 Im HERE 开头),知道为什么吗?

console.log("im starting");
process.start(function() {
  //this line doesnt called
  console.log("im HERE");
  server.listen(app.get('port'), function(err) {
    if (err) {
      console.error(err);
    } else {
      console.log(' listen to: ' + app.get('port'));
    }

  });
});

调用方法 start 和 finish ...知道它是什么吗?

在我添加 process.start 之前,代码如下所示: 这有效 OK,现在我需要添加这个 process.start 并在它 finish 时添加 server.listen

module.exports = (function() {
  server.listen(app.get('port'), function(err) {
    if (err) {
      console.error(err);
    } else {
      console.log('listen ' + app.get('port'));
    }
  });
}());

更新

这是进程启动的代码

exports.start = function () {

    Validator.validateJson(function (err) {
        console.log(err);
        process.exit(1);
    });

    plugin.parse().then(function (conf) {
        require.cache.pe.configObj = conf;
    }, function (err) {
        console.log(err);
    });

    envHandler.eventE.on('AppP', function () {
        console.log('User port ' + require.cache.per);
    });
    var run= function () {
        return Promise.all([
            childPro.create(path.join(value)),
            childPro.findAndUpdateUser()
        ]).spread(function (cmd,updatedAppEnv) {
            return Promise.all([childProc.executeChildProcess('exec', cmd, updatedAppEnv), Promise.delay(50).then(function (results) {
                return inter.ProcessRun(val);
            })]);
        })
    }();

}

如果在这种情况下很重要,我会像 bluebird 一样使用 promise 库

有点不清楚你想在哪里调用回调。简而言之,更改开始函数以接受 callback 参数并在完成后调用 callback()(或在最后将其作为参数传递给 then)。

exports.start = function (callback) {

    Validator.validateJson(function (err) {
        console.log(err);
        process.exit(1);
    });

    plugin.parse().then(function (configObj) {
        if (typeof require.cache.persist === 'undefined') {
            require.cache.persist = {};
        }
        require.cache.persist.configObj = configObj;
    }, function (err) {
        console.log(err);
    });

    envHandler.eventEmitterIns.on('AppPortDef', function () {
        console.log('User port ' + require.cache.persist.port);
    });
    var run= function () {
        return Promise.all([
            childPro.create(path.join(value)),
            childPro.findAndUpdateUser()
        ]).spread(function (cmd,updatedAppEnv) {
            return Promise.all([childProc.executeChildProcess('exec', cmd, updatedAppEnv), Promise.delay(50).then(function (results) {
                return inter.ProcessRun(val);
            })]);
        })
    }();

    run.then(callback);
}