私は、このコードが期待どおりに機能しないことに気付きました。Javascript closure:モデルへの直接アクセスと変数の使用の違い
メッセージRENDER_IMAGEはペイロード内に別のイメージで複数回ブロードキャストされますが、下のコードのself.model.get( "image")は常に最後のイメージを返します。どうして?
bus.subscribe("RENDER_IMAGE", (message, payload) => {
const self = this;
self.model.set(payload);
self.render().then(function() {
bus.broadcast("IMAGE_RENDER_COMPLETE", self.model.get("image"));
});
});
はまた、このコードは正しく動作します:
bus.subscribe("RENDER_IMAGE", (message, payload) => {
const self = this;
self.model.set(payload);
const image = self.model.get("image"));
self.render().then(function() {
bus.broadcast("IMAGE_RENDER_COMPLETE", image;
});
});
[ループ内のJavaScriptクロージャー - 簡単な実用的な例]の複製が可能です(http://stackoverflow.com/questions/750486/javascript-closure-inside-loops-simple-practical-example) – JJJ
2番目のアプローチですか? – Endless
@Endless私は2番目の場合のような行動が必要です。私は正しい、それは私が変数として画像を保存する - それは約束されるまで使用されるまでこの値を保持する?なぜモデルがこの価値を保持しないのでしょうか? – francesca