我注意到,這段代碼不能像我期望的那樣工作。Javascript關閉:直接訪問模型和使用變量之間的區別
消息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
所以,你不能使用第二種方法呢? – Endless
@Endless我需要像在第二種情況下的行爲。我是對的嗎?當我將圖像保存爲一個變量時 - 它會保留這個值,直到它將用於承諾?爲什麼模型不保留這個值? – francesca