2016-12-16 17 views
5

Używam obietnicy w bloku kodu poniżej, 2 najpierw wtedy() Nie zwracam żadnej wartości, więc zastanawiam się, że jest to funkcja w pierwszym wtedy() wywołanym przed funkcją w następny(). Im przy maszynopis w kątowej 2. Dziękuję: Dużywając wtedy() w obietnicy

Promise.resolve() 
    .then(()=>{ 
     this.getListStatus(); 
    }) 
    .then(()=>{ 
     return this._laundryServiceOrderService.findAll(true, offset, this.itemsPerPage, filterQuery) 
    }) 
    .then((response) => { 
     this.orders = response.data; 
     this.totalItems = response.totalItems; 
    }) 
    .catch(error => { 
     FlashMessage.setError(error.message); 
    }); 
+0

_ "Ja nie zwraca żadnej wartości" _ Dlaczego nie zwracają wartość? Jaki jest cel 'Promise.resolve()'? – guest271314

+1

Myślę, że then() używa odpowiedzi zwróconej z poprzedniej następnie –

+1

@NhanNguyen: Poprawnie. –

Odpowiedz

6

pierwszy wtedy() Ja nie zwraca żadnej wartości, więc zastanawiam się, że jest to funkcja w pierwszym następnie() wywołana przed funkcją w następnym następnie().

Tak, jest. (Można to łatwo sprawdzić za pomocą debuggera.)

Nie ma znaczenia, że ​​nie zwraca wartości; to faktycznie to samo, co wykonanie return undefined. Zatem następne wywołanie zwrotne w łańcuchu będzie miało wartość undefined, ale ponieważ to następne wywołanie zwrotne nie dba o wartość rozdzielczości, jest to w porządku.

Oto prosty przykład pokazując go:

Promise.resolve("a") 
 
    .then(result => { 
 
    console.log("First callback got: " + result); // Gets "a" 
 
    }) 
 
    .then(result => { 
 
    console.log("Second callback got: " + result); // Gets undefined 
 
    return "b"; 
 
    }) 
 
    .then(result => { 
 
    console.log("Third callback got: " + result); // Gets "b" 
 
    }) 
 
    .catch(error => { 
 
    console.log("There's no error above, this won't get triggered."); 
 
    });

+0

dziękuję bardzo –