首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >等待异步lambda函数gjs

等待异步lambda函数gjs
EN

Stack Overflow用户
提问于 2020-04-09 19:24:53
回答 1查看 101关注 0票数 0

我正在尝试让下面的异步调用(它们是异步的,因为外部应用程序接口,而不是我的设计)按顺序运行,现在我设法让foo被它的调用函数等待,但我在等待foo2时遇到了麻烦,因为我在异步行上得到了以下错误

参数列表后JS错误: SyntaxError: missing

我遗漏了什么?

ps:还有比设置一个全局变量并从外部访问它更好的从回调中“返回”值的方法吗?

代码语言:javascript
复制
 foo(nick) {
        return new Promise((resolve, reject) async () => {
            async_foo(par, [],
                (c, res) => {
                    let par2;
                    try {
                        par2 = c.somefun(res);
                    } catch (e) {
                        logError(e, `Some error`);
                        return;
                    }

                    let output = await this.foo2(par2);

                    resolve(output);
                });
        });
    }
代码语言:javascript
复制
 foo2(par2) {
        return new Promise((resolve, reject) => {
            par2.asyncfun(
                null, this.callback.bind(this, par2));
        });
    }

提前谢谢你

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-10 02:01:43

我认为你只是想在一个承诺中做太多的事情:

代码语言:javascript
复制
async function(nick) {
    let res1 = await new Promise((resolve, reject) => {
        async_foo(par, [], (c, res) => {
            try {
                resolve(async_foo_finish(res));
            } catch (e) {
                reject(e);
            }
        });
    });

    return new Promise((resolve, reject) => {
        res1.asyncfunc(null, (obj, res) => {
            try {
                resolve(obj.asyncfun_finish(res));
            } catch (e) {
                reject(e);
            }
        });
    });
}

foo('something').then(output => {
    log('output');
}).catch(e => {
    logError(e);
});

很难给出好的建议,因为你没有展示出真正的功能。

Promises/async-await的主要目的之一是避免复杂的回调嵌套。通常,您应该将您的函数链分解为单独的Promise,然后一个接一个地await它们。

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

https://stackoverflow.com/questions/61120058

复制
相关文章

相似问题

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