javascript - 从 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);
解决方案
async
和await
关键字是管理现有承诺的工具。
它们不能用于将基于回调的 API 转换为基于 Promise 的 API。您仍然需要为此显式创建和解析 a new Promise
。
推荐阅读
- angular - 我需要在Angular 7中弹出一个刚刚选择的图像,并在单击时弹出
- android - Android getSystemService TypeCastException
- angular - 无法使用 ng-apimock 模拟 API 调用
- python - 添加栅格
- querydsl - QueryDSL用'OR'和'AND'括号错误
- pytorch - 我定义了一个损失函数,但向后出现错误,有人可以告诉我如何解决它
- java - 如何修复“线程中的异常”main“java.lang.VerifyError:无法从最终类继承”错误
- excel - 应用另一个过滤器后,前 n 个值的 Excel 过滤器
- java - Java项目中的错误:找不到符号
- android - Android Studio kotlin 聊天画面布局