
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) 试下? |