2013-09-19 5 views
1

У меня есть следующая проблема, когда метод SaveChanges breeze js (1.4.2) обрабатывает обещание «then» до завершения операции сохранения.breeze js сохранение изменений завершается до сохранения

save() 
{ 
    this.manager.SaveChanges() 
     .then(process); 
} 
function process() 
{ 
    var baseUri = "api/DoServerProcessingOnNewData"; 
    $.getJSON(baseUri, data => 
    { 
     // Save operation is still running, and server processes old data 
     this.items(data) 
    }) 
} 

Я бы ожидал, что «то» часть обещания будет выполнена после того, как SaveChanges полностью завершит? это ожидаемое поведение, могу ли я обнаружить, когда операция сохранения действительно завершена?

+0

Какие доказательства вы видите, что SaveChanges не завершили? – RockResolve

+0

метод api сервера, вызываемый в процессе func, получает старые данные i.e, прежде чем произойдет спасение. Также теперь видно, что после сохранения идентификатор объекта не фиксируется после завершения «then» после сохранения изменений. если я добавлю паузу, то есть дождитесь завершения изменений сохранения, все работает нормально, но я должен опираться на обещание «затем», чтобы уведомить меня об этом. –

+0

Извините, я не могу воспроизвести поведение, которое вы видите. Вы уверены, что вы называетесь EntityManager.saveChanges (строчные буквы s)? –

ответ

1

Решенный вопрос, я обернул вызов изменения изменений на моем уровне обслуживания данных. Вызов EntityManager.saveChanges прямо правильно обрабатывает обещание.

// Don't do this, wrap the saveChanges method 
public static saveChanges() 
{ 
    return DataService.EntityManager.saveChanges(); 
} 
Смежные вопросы