Javascript 对承诺使用apply(),但无法访问承诺响应数据
我正在对一个返回承诺的函数调用apply方法,在调用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(() =&
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调用一个返回承诺的函数。是的,我不确定发生了什么,在解释我试图实现的目标时遇到了一些困难。谢谢,太棒了,谢谢菲利克斯。我不知道什么时候链接。然后他们接受了上一个的回应。这对我来说是一个根本性的误解。我会接受这个答案。如果有什么安慰的话,我在第一次了解承诺时也犯了同样的错误:)