在bowerInstall方法完成後(問題與使用exec命令的其他方法相同),在我的操作中,我正在執行async callback。我需要這個,因爲沒有它,下一個動作將在方法完成之前觸發。爲什麼Yeoman不能在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方法永遠不會被觸發,並且運行循環會中斷。
[編輯]解決方案
像西蒙Boudrias說,我不能在安裝環境中使用異步回調。我必須在安裝結束後將我想運行的任務放到最後。
install: {
installPackage: function() {
this.bowerInstall(this.packageName);
}
},
end: {
nextAction: function() {
// Do stuff after installPackage is completed.
}
}
對此沒有幫助,但您不需要在函數中包裝完成,然後啓用它。只是通過它不加思索地通過它。例如'this.bowerInstall(this.packageName,done)' – Patrick
@Patrick是的,這是真的,但我在方法回調中做了其他事情。 – guduf