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

如何实现延迟1秒返回指定数据的JavaScript mocker函数

正确实现代码

function mocker(data) {
  const delayInMilliseconds = 1000;
  // 按要求返回函数
  return function () {
    // 返回Promise实例支持异步调用
    return new Promise((resolve) => {
      setTimeout(() => {
        resolve(data);
      }, delayInMilliseconds);
    });
  };
}

原代码问题说明

  • 第一点:原mocker函数没有按要求返回函数,执行mocker(data)后得到的是undefined,无法满足后续调用getUsers()的需求
  • 第二点:没有用Promise包装异步逻辑,setTimeout回调里的return只能把值返回到回调函数本身,无法透传到外层,自然不支持.then()和await的异步调用方式

实现逻辑说明

  1. mocker接收传入的data后,直接返回一个新的函数,符合入参返回要求里@returns {Function}的约定
  2. 调用返回的函数时,会返回一个Promise实例:
    • 内部setTimeout延迟1秒执行
    • 延迟结束后调用resolve把传入的data抛出,即可被.then()或者await捕获到对应的值
  3. 完全符合测试用例要求:
    • 用await调用时,会等待Promise完成,拿到的值和原始data完全相等,通过第一个测试
    • 直接调用返回的函数时得到的是Promise实例,和原始data不相等,通过第二个测试

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 05:45:05