You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript如何正确组合异步函数实现异步单词拼接后统计数量

问题修复方案

错误原因

  • 直接触发语法报错的原因是你在compose的参数列表中直接使用了(await addAsyncWord):await关键字只能在async函数内部使用,且你此处是对函数本身使用await,既不符合语法规则也不符合业务逻辑。
  • 你原有实现的compose是同步函数组合工具,无法处理异步函数返回的Promise对象,就算修复语法错误,后续的拆分、计数逻辑拿到Promise也无法正常执行。

修改方案

  1. 改写compose2适配异步逻辑,每一步执行前先等待上一步的异步结果返回
  2. 移除compose参数中非法的await关键字,直接传入异步函数即可
  3. 调用最终生成的word函数时需要传入初始文本参数,补充兜底逻辑避免输入为undefined
  4. 如果运行环境不支持顶层await,可以把执行逻辑包在异步自执行函数中

完整可运行代码

const compose2 = (f, g) => async (...args) => f(await g(...args))
const compose = (...fns) => fns.reduce(compose2)

const count = arr => arr.length
// 加filter避免连续空格/首尾空格产生的空字符串被计数
const split = str => str.split(/\s+/).filter(Boolean)
const addAsyncWord = async str => `${str} some words obtained asynchronously`
// 兜底默认空字符串,避免无输入时报错
const read = text => text || ''

const word = compose(
  count,
  split,
  addAsyncWord,
  read
)

// 执行调用,传入初始文本
(async () => {
  console.log('word ->', await word('test initial content')) 
  // 输出结果:word -> 7 (初始3个单词 + 异步返回的4个单词)
})()

内容的提问来源于stack exchange,提问作者user2580401

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 21:54:05