【问题标题】:Typescript async generic function打字稿异步泛型函数
【发布时间】:2023-02-14 17:55:00
【问题描述】:

我是 TypeScript 的新手,我有一个如下所示的异步函数。有人可以解释它的作用以及resolve 来自哪里吗?我希望我为此提供了足够的信息。

async function SendMessage<T extends WorkerResponse>(msg: { id: number }): Promise<T>
{
    const response = await new Promise<WorkerResponse>(resolve =>
    {
        waitingMessages.set(msg.id, resolve);
        worker.postMessage(msg);
    });

    return response as T;
}

当我将鼠标悬停在变量上时,我得到这些:

(parameter) resolve: (value: WorkerResponse | PromiseLike<WorkerResponse>) => void

const waitingMessages: Map<number, (response: WorkerResponse) => void>

【问题讨论】:

  • 这是一个 JavaScript 问题。查找承诺。
  • resolve 是 Promise 概念的一部分。你可以阅读更多关于它的信息here
  • 也许作者应该从更底层的基础开始:developer.mozilla.org/en-US/docs/Glossary/Callback_function
  • 它所做的是将消息 ID 添加到消息队列,然后通过 Web Worker 发送它。你可以阅读更多关于 web workers here

标签: javascript typescript typescript-generics


【解决方案1】:

如您所见,他正在构建一个新的 Promise 对象,该对象将 resolve 和 reject 作为参数。

在这种情况下,如您所见,它返回了 resolve 函数,这就像说 Promise.resolve() with some values inside it 。但是你正在解决并且它正在返回这个对象

{ waitingMessages.set(msg.id, resolve); worker.enter code herepostMessage(味精); });

【讨论】:

    猜你喜欢
    • 2023-02-22
    • 1970-01-01
    • 2021-06-17
    • 2020-07-08
    • 2015-11-27
    • 2022-11-11
    • 2018-05-03
    • 2019-01-08
    • 2017-12-01
    相关资源
    最近更新 更多