首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >js如何返回内层承诺?

js如何返回内层承诺?
EN

Stack Overflow用户
提问于 2018-06-04 22:43:45
回答 1查看 58关注 0票数 0

我有以下嵌套的Promise对象。我需要的是将res3返回给其他then函数。当我使用下面的代码时,我得到的返回值是res1,而不是res3。我应该怎么做才能获得res3

我的想法是,我需要post数据到/pc_data/,如果post成功,我需要post到/server/register_keystroke/,然后我需要获得res3用于以下目的。

谢谢!

代码语言:javascript
复制
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'
        );
    })
}
EN

回答 1

Stack Overflow用户

发布于 2018-06-04 22:47:35

代码语言:javascript
复制
 .then( this._sendRequest("..."))

这是没有意义的,因为您将请求实用程序作为回调返回的承诺传递给then处理程序,并且调用promise不起作用。取而代之的是,你应该传递一个返回Promise的处理函数,这样外部promise链就会变平,你就会得到你想要的东西:

代码语言:javascript
复制
 .then(() => this._sendRequest("..."))
 .then(response => /*..*/)

哦,右括号(})在错误的位置。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50683185

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档