3

我尝试用 co 制作一些节点脚本。它运作良好,但在脚本完成之前有很大的延迟。(我在一秒钟后得到“Ok”或“Bad”,但脚本在 7 秒后完成)。我错过了什么?

co(function *() {
    let errors = yield someCheck(process.argv);
    if (!errors) {
        console.log('Ok');
    } else {
        console.log('Bad');
    }

})(function(e) {

    if (e) {
        console.log(e);
    }
});
4

2 回答 2

0

当我运行你的代码时,我得到一个 typeError 。我不确定你想在那里做什么,但我认为你不能在调用 co() 时将错误处理程序作为第二个参数传递,你必须使用 then() 或 catch() 进行错误处理。

// Here's an example
co(function*() {
  var result = yield Promise.resolve(true);
  return result;
}).then(function(value) {
  console.log(value);
}, function(err) {
  console.error(err.stack);
});

// you can also catch the error
co(function *(){
  // yield any promise 
  var result = yield Promise.resolve(true);
}).catch(onerror);
function onerror(err) {
  // log any uncaught errors 
  // co will not throw any errors you do not handle!!! 
  // HANDLE ALL YOUR ERRORS!!! 
  console.error(err.stack);
}
于 2016-06-07T14:52:36.183 回答
0

我想process.exit()会解决你的问题。

于 2016-06-14T07:11:39.880 回答