У меня есть обещание $http в угловом приложении, например:
this.data = $http.get('/api/foo', {})
Затем другие части моего приложения добавляют к этому обещанию обработчики успеха и ошибок.
Моя проблема в том, что я хочу обновить информацию в переменной this.data
, а затем повторно запустить все прикрепленные к обещанию обработчики. Можно ли это сделать с помощью какого-то метода this.data.$refresh()
, или мне придется хранить все обработчики где-то еще и повторно прикреплять их к новому $http.get?
РЕДАКТИРОВАТЬ: Может быть, немного более ясный пример:
this.data = $http.get('/api/foo', {})
this.data.success(doSomething)
// doSomething() runs because the response arrives.
this.data.someMagic()
// doSomething() runs again without being reattached.
Чего я хочу избежать, так это:
this.data = $http.get('/api/foo', {})
this.data.success(doSomething)
// Time passes...
this.data = $http.get('/api/foo', {}) // All old handlers have now been thrown away.
this.data.success(doSomething)
Это связано с тем, что есть несколько обработчиков как для успеха, так и для ошибки, и они добавляются разными контроллерами и службами, поэтому потребуется какая-то запутанная система обратного вызова, чтобы заставить их всех повторно подключать свои обработчики каждый раз, когда переменная обновляется.