2016-12-16 149 views
5

我在下面的代碼塊中使用承諾,2首先然後()我不返回任何值,所以我不知道這是函數中的第一個然後()函數之前調用下一個()。在角2.使用打字稿林謝謝:d使用然後()在承諾

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

_ 「我不返回任何值」 _你爲什麼不返回值? Promise.resolve()的目的是什麼? – guest271314

+1

我認爲then()使用從前面返回的響應 –

+1

@NhanNguyen:正確。 –

回答

6

第一則()我不返回任何值,所以我不知道這是在第一個功能,那麼()呼籲,在未來的功能之前,然後()。

是的。 (這可以用調試器進行簡單的檢查。)

無關緊要,它不會返回一個值;這與return undefined的效果相同。因此,鏈中的下一個回調將看到undefined作爲分辨率值,但由於下一次回調並不關心分辨率值,所以沒關係。

這裏有一個簡單的例子來展示它:

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

非常感謝 –