loadData(){
return myService.getData().then(response=>{
//do some stuff
return response;
})
}
当我打电话
Promise.all([loadData()]).then(function([data]){
console.log([data])
}
console.log
显示了我通过服务加载的数据。
如果我将loadData方法更改为以下内容-那么Promise.all
登录到控制台后,我将变得未定义。
loadData(){
return myService.getData().then(response=>{
//do some stuff
}).then(res =>{
//do more stuff
return res;
}
}
谁能告诉我我做错了什么?
答案 0 :(得分:1)
履行处理器的返回值是下一个履行处理器的输入(或承诺输入)。根据您的描述,您不会返回setInterval(() => { this.loading = true; this.getSignals(); }, 60000);
所在的任何地方:
//do some stuff
调用不返回任何内容的函数会导致loadData(){
return myService.getData().then(response=>{
//do some stuff
return /*something appropriate*/; // <===========================
}).then(res =>{ // <=== it will come through here
//do more stuff
return res;
}); // <========== Added missing ); here
}
,因此这就是undefined
是res
的原因。
旁注:您不需要两个履行处理程序(undefined
处理程序),除非您在第一个处理程序中返回的是承诺(或其他可兑现的处理程序)。