我有以下嵌套的Promise对象。我需要的是将res3
返回给其他then函数。当我使用下面的代码时,我得到的返回值是res1
,而不是res3
。我应该怎么做才能获得res3
?
我的想法是,我需要post数据到/pc_data/
,如果post成功,我需要post到/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'
);
})
}
发布于 2018-06-04 22:47:35
.then( this._sendRequest("..."))
这是没有意义的,因为您将请求实用程序作为回调返回的承诺传递给then处理程序,并且调用promise不起作用。取而代之的是,你应该传递一个返回Promise的处理函数,这样外部promise链就会变平,你就会得到你想要的东西:
.then(() => this._sendRequest("..."))
.then(response => /*..*/)
哦,右括号(}
)在错误的位置。
https://stackoverflow.com/questions/50683185
复制相似问题