2013-07-04 3 views
15

Mam model Ember-Data. Chciałbym wykonać pewne przetwarzanie w. Then obiecuję po załadowaniu, a następnie zwróceniu tego samego modelu, co obietnicy. To właśnie mam teraz. Jak zawinąć obiekt powrotu jako obietnicę, aby inne obietnice mogły być powiązane?Jak utworzyć obietnicę w Ember.js dla modelu danych Ember

App.Member.find(1).then(function(member){ 

    //do some processing here 
    return member; // Does this need to be wrapped as a promise? 

} 
+0

Gdy zwrócisz wynik, który nie jest kolejną "obietnicą" z jakiegokolwiek "dostępnego", zostanie uznany za rozwiązany. Tak więc zwracanie 'member' jest równoznaczne z zawijaniem go wewnątrz innej' obietnicy 'i ręcznym wywoływaniem 'resolve'. Potrzebujesz tylko "obietnicy" opakowania, jeśli "członek" miał zostać uzyskany przez inną operację asynchroniczną. –

+0

To dobrze wiedzieć .. Dzięki! – ianpetzer

Odpowiedz

32

Zasadniczo można utworzyć obietnicy takiego:

var promise = new Ember.RSVP.Promise(function(resolve, reject){ 
    // succeed 
    resolve(value); 
    // or reject 
    reject(error); 
}); 

a następnie można użyć właściwości then do łańcucha go dalej:

promise.then(function(value) { 
    // success 
}, function(value) { 
    // failure 
}); 

Można aslo spojrzeć to jsbin, które pokazuje, w jaki sposób można je wdrożyć. Bardzo pomocne jest również this.

Mam nadzieję, że to pomaga.

+0

To świetnie .. Dzięki. – ianpetzer

+0

Hej, powinienem rozwiązać, odrzucić być częścią? czy mam to źle. Mam na myśli jaka jest różnica między postanowieniem, odrzuceniem a sukcesem, niepowodzeniem w obietnicy (funkcja (rozstrzygnięcie, odrzucenie) {}). Wtedy (sukces, niepowodzenie); Zakładam, że gdy obietnica zwróci true, wtedy sukces zostanie wywołany w "wtedy", jeśli zwróci wartość false, a następnie zostanie wywołana awaria? – wallop

+0

Nie można użyć funkcji model.get lub model.set http://jsbin.com/furukuyetu/1/edit – suryakrish