首页 > 解决方案 > 从 Promise 转换为异步函数

问题描述

如何将以下承诺函数更改为异步函数。

const createRecord = (record) =>{
    return new Promise((resolve)=>{
        queue.push({
            id: Math.floor(Math.random()*100),
            callback: (id)=>{resolve(id);},
            data: record
        });
    });
};

我尝试了以下代码,但函数在回调完成之前完成。

const createRecord = async (record) =>{
    queue.push({
        id: Math.floor(Math.random()*100),
        callback: (id)=>{return id;},
        data: record
    });
};

回调由以下interval方法发起;

var queue = [];

setInterval(() => {
    queue.forEach((record)=>{
        record.callback(record.id);
    });
}, 2000);

标签: javascriptasynchronouspromise

解决方案


asyncawait关键字是管理现有承诺的工具。

它们不能用于将基于回调的 API 转换为基于 Promise 的 API。您仍然需要为此显式创建和解析 a new Promise


推荐阅读