优雅地 `async/await`
字数:316,预计阅读时间:2min
比如下面这样,一个简单的 Node.js 中使用 const fetch = require("node-fetch");
像这样的异步场景,Node.js 中会有很多。如果都通过 将异步进行一层封装因为本质上 比如下面这样: function await2js(promise) {
return promise.then(result => [undefined, result]).catch(error => [error, undefined]);
} 该方法始终返回两个结果,第一个是错误,第二个是数据,这和 Node.js 中回调的入参 所以改造后的使用示例: async function getData() {
const url = "https://api.github.com/users/wayou";
const [error, response] = await await2js(fetch(url));
if (error) {
throw error;
}
这层封装针对单个 当然,如果嫌麻烦,也可通过 TypeScript 版本function await2js<T, K = Error>(promise: Promise<T>) {
return promise
.then<[undefined, T]>((response: T) => [undefined, response])
.catch<[K, undefined]>((error: K) => [error, undefined]);
} 这里有个相应的 npm 包便是做这事情的 await-to-js。 相关资源 |

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述