Javascript 对承诺使用apply(),但无法访问承诺响应数据

Javascript 对承诺使用apply(),但无法访问承诺响应数据,javascript,es6-promise,axios,Javascript,Es6 Promise,Axios,我正在对一个返回承诺的函数调用apply方法,在调用apply方法后获取响应数据时遇到问题 getData(data) { axios.post('/post/something', data) .then(res => console.log(res)); // Returns 'Success' } callService(args, fn) { return fn.apply(this, args) .then(() =&

我正在对一个返回承诺的函数调用apply方法,在调用apply方法后获取响应数据时遇到问题

getData(data) {
    axios.post('/post/something', data)
         .then(res => console.log(res)); // Returns 'Success'
}

callService(args, fn) {
    return fn.apply(this, args)
             .then(() => this.doSomethingElse())
             .then(res => console.log(res)); // Returns undefined
}


callService([1,2], getData);
为什么fn.apply包含承诺,但不包含从服务器发回的数据?正确的方法是什么

为什么fn.apply包含承诺,但不包含从服务器发回的数据

callService
返回一个承诺,该承诺解析为
this.doSomethingElse()
的返回值,该值显然是
未定义的。这就是当您链接
然后调用
时发生的情况。
返回的承诺。然后
解析为传递给它的函数的返回值

正确的方法是什么

我猜你想要这个:

callService(args, fn) {
    return fn.apply(this, args)
             .then(res => {
                this.doSomethingElse();
                return res;
             });
}
或者如果
doSomethingElse
返回承诺:

callService(args, fn) {
    return fn.apply(this, args)
             .then(res => this.doSomethingElse().then(() => res));
}

res
将是
this.doSomethingElse()
返回的值。此外,您不能对承诺“使用”apply。您正在使用apply调用一个返回承诺的函数。是的,我不确定发生了什么,在解释我试图实现的目标时遇到了一些困难。谢谢,太棒了,谢谢菲利克斯。我不知道什么时候链接。然后他们接受了上一个的回应。这对我来说是一个根本性的误解。我会接受这个答案。如果有什么安慰的话,我在第一次了解承诺时也犯了同样的错误:)