gpt4 book ai didi

javascript - 使用 JavaScript 拦截方法调用参数

转载 作者:行者123 更新时间:2023-11-28 06:10:02 34 4
gpt4 key购买 nike

我有许多调用 API 端点的方法。每个端点都需要一个长度限制为 100 的 id 数组。通常我必须对这些端点进行多次调用(由于设计不当等),因为我有大约 400 个批处理。所以在这个例子中我最终得到了将 id 分成 4 组并发出 4 个请求。

我有一些低级方法,可以简单地使用 superagent 发出 HTTP 请求:

getProducts (ids, token) {
return Request
.send({ ids : ids })
}

其中的数量相当少,我不愿意将它们全部更改为将 id 分成集合,而是返回一个请求数组。

我的想法是创建某种形式的包装器,它可以拦截调用,将 id 分解为多个集合并返回一个请求数组,如果这看起来不好的话,请告诉我。也许是这样的:

var chunk = function (op) {
return _.wrap(op, function (func, interceptor) {
var args = interceptor(_.drop(arguments, 1));

return func.apply(this, args);
});
}

我所坚持的是如何使用这种方法首先生成集合,然后生成请求。如果我想保留 getProducts 的签名,这似乎很难做到。

var requests = chunk(getProducts);

是否有其他一些技术适合这种方法,或者这只是疯狂的?我对任何替代技术持开放态度。

最佳答案

function multiRequest(ids, token) {
var CHUNK_SIZE = 100;
var requests = [];
for (var i = 0; i < ids.length; i += CHUNK_SIZE) {
requests.push(getProducts(ids.slice(i, i + CHUNK_SIZE)));
}
return requests;
}

您可以像调用 getProducts 一样调用它,它将返回一个请求数组,该数组分为 100 个 id 组。

关于javascript - 使用 JavaScript 拦截方法调用参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36488827/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com