【问题标题】:how to hand then promise as sync如何将承诺作为同步
【发布时间】:2021-06-20 15:49:08
【问题描述】:

我遇到了一个需要使用的异步 js 函数。 我的问题是需要“停止” js,直到这个函数返回应该的结果。

函数“svgAsPngUri”返回承诺 - 如文档https://github.com/exupero/saveSvgAsPng中所述

   async function GetBase64FromSVG(element) {
        let response = await svgAsPngUri(element, null).then(async uri => { return uri });
        return response;
    }

我确实尝试了等待并使用异步但没有成功。 有什么帮助吗?
还是我想错了?

【问题讨论】:

  • 好吧,也许你应该提供一些你正在调用这个函数的上下文。至于现在,您可以简化它: async function GetBase64FromSVG(element) { return svgAsPngUri(element, null) }

标签: javascript async.js


【解决方案1】:

在 promise 解决之前,您将无法“停止” JavaScript 代码。异步代码的全部目的是在svgAsPngUri 运行时释放主线程以执行其他代码(JavaScript 的运行时是单线程的)。

但是,您可以让您的代码看起来与 async/await 同步,如下所示:

function GetBase64FromSVG(element) {
    return svgAsPngUri(element, null);
}

async function foo() {
    // ...
    const result = await GetBase64FromSVG(element);
    // ...
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-18
    • 2020-04-15
    • 2021-05-17
    • 2016-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多