我有以下嵌套的Promise对象。我需要的是将res3
返回到其他函数。当我使用以下代码时,我返回res1
而不是res3
。我该怎么办才能获得res3
?
我的想法是我需要将数据发布到/pc_data/
,如果发布成功后我需要发布到/server/register_keystroke/
,那么我需要获得res3
以达到以下目的。
谢谢!
registerKeystroke() {
return this._sendRequest('/pc_data/', {'username': username, 'password': password})
.then(res1 => {
console.log('res1:' + res1);
this._change_status(res.toString());
return res1
})
.then(
this._sendRequest('/server/register_keystroke/', this._getRequestData())
.then(res3 => {
this._clearInputsTimestamps();
console.log('res3:' + res3);
return res3;
})
)}
_sendRequest(url, data) {
return new Promise((resolve) => {
$.post(
url,
JSON.stringify(data),
(data) => resolve(data),
'json'
);
})
}
答案 0 :(得分:1)
.then( this._sendRequest("..."))
这没有任何意义,因为您传递了您的请求实用程序作为回调函数返回到then处理程序的承诺,并且调用promise不起作用。 Imstead你应该传递一个返回Promise的处理函数,所以外部的promise链将被展平,你得到你想要的东西:
.then(() => this._sendRequest("..."))
.then(response => /*..*/)
哦,结束括号(}
)处于错误的位置。