我正在尝试执行 async callback在我的行动之后bowerInstall方法已完成(问题与使用 exec 命令的其他方法相同)。我需要它,因为如果没有它,下一个操作将在该方法完成之前被触发。
_-----_
| | .--------------------------.
|--(o)--| | Yeoman is frustrated |
`---------´ | Help him please! |
( _´U`_ ) '--------------------------'
/___A___\
| ~ |
__'.___.'__
´ ` |° ´ Y `
问题是 Yeoman 不支持位于方法回调中的异步回调。
default: {
installPackage: function () {
done = this.async();
this.bowerInstall(this.packageName, function () {
done();
});
},
nextAction: function () {
// Do stuff after installPackage is completed.
}
}
在这种情况下,永远不会触发 bowerInstall 方法并且运行循环中断。
[编辑] 解决方案
正如 Simon Boudrias 所说,我不能在安装上下文中使用异步回调。我必须将安装后要运行的任务放在结束上下文中。
install: {
installPackage: function () {
this.bowerInstall(this.packageName);
}
},
end: {
nextAction: function () {
// Do stuff after installPackage is completed.
}
}
最佳答案
Yeoman 安装方法在 install
任务循环中自动安排。
在此处使用 this.async()
会使进程陷入僵局。
此更改记录在 the v0.18.0 release 上.可能值得在安装方法文档中更明确地详细说明该行为 -> https://github.com/yeoman/yeoman.io/blob/master/app/authoring/dependencies.md
关于javascript - 为什么 Yeoman 不能在 exec 方法后执行异步回调?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32010821/