如何解析惰性初始化数据结构中的所有异步延迟嵌套值?
相关术语与现成方案推荐
你要实现的是递归解析对象中的异步函数,将其替换为实际返回的原生值,这类需求对应以下核心术语和可用库:
核心术语
- Resolver Execution(解析器执行):这是GraphQL的核心概念,指自动执行字段关联的解析函数并将结果替换原字段,和你的需求完全匹配
- Async Object Resolution(异步对象解析):直接描述这类深度遍历对象/数组、执行异步函数并替换结果的行为
- Hydration(水合):部分场景下也用来指代将惰性加载/函数式定义的内容转换为实际值的过程
可用库
- graphql-js:作为GraphQL的核心库,其字段解析逻辑可单独复用,用来处理普通对象的异步函数解析
- resolve-object:专门针对这类需求的工具,会自动递归遍历对象和数组,执行所有异步函数并替换为返回值
- async-resolve:轻量级工具,支持深度解析对象中的异步函数,配置简单
示例(以resolve-object为例)
const resolveObject = require('resolve-object'); const foo = { id: 1, name: 'Some String value', supplier: async () => { return 'Some supplier name' }, nested: async () => { return [ { id: 2, name: async () => { return 'this is a name' } } ] } }; resolveObject(foo).then(resolved => { console.log(resolved); // 输出即为目标纯原生值对象 });
内容的提问来源于stack exchange,提问作者Hammerbot
相关产品推荐
相关产品推荐

