return promise after multiple then 是 returning undefined

return promise after multiple then is returning undefined

我有一个调用执行 axios get 请求的服务的方法。这 return 是一个 promise.I 然后调用 .then 和 return 响应。当我调用 loadData 时,我得到了一个承诺 returned.

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;
        }
   }

谁能告诉我我做错了什么;

履行处理程序的 return 值是下一个履行处理程序的输入(或承诺输入)。根据您的描述,您没有 returning 任何您拥有 //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
}

调用一个没有 return 任何结果的函数会导致 undefined,所以这就是为什么 resundefined

旁注:您不需要两个履行处理程序(then 处理程序),除非您在第一个中 returning 是一个承诺(或其他可行的)。