【发布时间】:2023-03-12 04:34:01
【问题描述】:
在bowerInstall 方法完成后,我正在尝试在我的操作中执行async callback(问题与使用 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.
}
}
【问题讨论】:
-
对此没有帮助,但您不需要将 done 包装在函数中然后调用它。只是通过它未调用。例如
this.bowerInstall(this.packageName, done) -
@Patrick 是的,这是真的,但我在方法回调中做了其他事情。
标签: javascript asynchronous bower yeoman yeoman-generator