registerKeystroke() {
var username = $('#id_username').val();
var password = $('#id_password').val();
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'
);
})
}
}
我想要 return 出 res3,给更后面的 then 函数用,可是现在 return 出来的是 true 值,res3 的记录值是 message,怎样才可以 return 出 res3 呢?
1
lzvezr 2018-06-04 22:42:48 +08:00 via Android
第二个.then 相当于.then(dosomething())并没有返回值吧,改成.then(() => dosomething())应该就行了
|
2
klesh 2018-06-04 22:44:22 +08:00 via Android
第二 then(后面插入 () => 试试?
then 接受一个或两个 function,你给它传入一个 promise ? |
3
banxi1988 2018-06-04 23:01:18 +08:00
async/await 了解一下。
|
4
wly19960911 2018-06-04 23:16:37 +08:00
return this._sendRequest('/server/register_keystroke/', this._getRequestData())
.then(res3 => { this._clearInputsTimestamps(); console.log('res3:' + res3); return res3; }) 试试看看,在 then 里面 return, |
5
shenyu1996 2018-06-04 23:26:03 +08:00 via Android
要异步的 return 值的话还是 async await 吧
|
6
autoxbc 2018-06-05 01:01:47 +08:00
按照标准模式写法,应该把 return res1 这句改成
return this._sendRequest('/server/register_keystroke/', this._getRequestData() 因为 then 的正确模式写法是 then( value => { somethingSync(); return new Promise( (resolve,reject) => { somethingAsync(); } ) } ) |
7
wz74666291 OP @klesh 这样 return 回来的值是 false,res3 也变成了 false 了
|
8
9066v 2018-06-05 11:23:35 +08:00
return res3 ==> return Promise.resolve(res3) 试下?
|