드라 실 (Drasill)이 제안한 것과 같은 것을 사용했지만 결국 조금 엉망이되었습니다. 이벤트가 작동하는 방식 때문에 처음으로 끝내기를 기다리지 않고 두 번 전화를했다면 망칠 것이라고 상상해 봅니다.
var save_multiple_stores = function(stores, success, fail) {
if (stores.length === 0) {
if (success) {
success();
}
} else {
var store = stores.pop();
var listeners = {}
var unbind_listeners = function() {
for (var evt in listeners) {
store.un(evt, listeners[evt]);
}
}
var onsuccess = function() {
unbind_listeners();
save_multiple_stores(stores, success, fail);
}
var onfail = function() {
unbind_listeners();
if (fail) {
fail();
}
}
store.on('save', onsuccess);
listeners.save = onsuccess;
store.on('exception', onfail);
listeners.exception = onfail;
var num_records = store.save();
//save event will not fire if there are no changed records
if (num_records <= 0) {
onsuccess();
}
}
};
감사합니다. 나는 이것과 같은 것이 아마도 작용할 것이라고 생각한다. 사실 'save()'가 어떤 인수를 취하지 않기 때문에 각 상점의 이벤트에 먼저 등록해야하기 때문에 실제로는 조금 더 고통 스럽습니다 ... 지루한 –
업데이트 된 시도를 바탕으로 답변을 게시했습니다. 이. 다시 한 번 감사드립니다 –