题库 软件开发 题目列表 实现一个控制请求并发函数 withConcurrency, 当前同...
问答题
实现一个控制请求并发函数 withConcurrency, 当前同一时间发出的请求数量不超过指定参数 max 的值。
    function request(options) {
      setTimeout(() => {
        options.success && options.success(`data from ${options.url}`);
        options.complete && options.complete();
      }, 2000)
    }

    /*
    request({
      url: string,
      success: function() {},
      complete: function() {}
    })
    */


    function withConcurrency() {
      // code here
    };


    request = withConcurrency(request, { max: 2 });

    // 如上参数所示,同一时间只能发出 1 和 2 的请求。
    // 1 和 2 同时发送,3 和 4 排队。
    // 1 和 2 有响应后,3 、4 再去补位。
    request({
      url: '/api/1'
    })
    request({
      url: '/api/2'
    })
    request({
      url: '/api/3'
    })
    request({
      url: '/api/4'
    })

要求:

  1. 假设现在已有现成的模拟 request 发送请求工具函数,该请求函数只支持success、complete 的 callback 回调。
  2. 如 demo 代码里 withConcurrency 参数所示,同一时间只能发出 /api/1 和 api/2 的请求,同时 /api/3 和 api/4 排队,当 1 和 2 里任意请求有响应时候(无论成功或者失败),排队的请求再去补位,但正在处理的请求数量不能超过参数 max 值。



题目信息
校招真题
-
正确率
0
评论
43
点击