2016-12-16 115 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

非常感谢 –