【问题标题】:Multipart Form Upload using POST API使用 POST API 的多部分表单上传
【发布时间】:2017-07-18 17:11:39
【问题描述】:

我在尝试使用 superagent 将项目上传到 API 时需要帮助。

单次上传的项目限制为 500 个。因此,如果我要发送超过 500 个项目,例如,如果上传大小为 500,我必须将请求分解为 3 个单独的请求。

我已经分解了请求,但现在我想知道如何向 API 发出多个请求。

知道如何使用 superagent 链接它吗?我已经查看了多部分上传,但我不知道这是否是同一件事。

【问题讨论】:

  • 不确定superagent,你应该可以使用.then()链接到fetch()调用
  • @guest271314 - 谢谢,但我想在数组数组上做。有没有办法以编程方式做到这一点?
  • 是的,见multiple, sequential fetch() Promise;请注意,该模式被认为是“调度”,而不是“递归”。你的意思是一千五百个请求?还是三个请求?是否需要按顺序提出请求?
  • 三个请求,但顺序不重要。

标签: javascript api superagent


【解决方案1】:

如果包含数组.length 的数组计算结果为true,则可以使用Array.prototype.shift().then() 来安排对函数的调用,否则返回响应数组。它按顺序执行该过程。

const requests = [[..], [..], [..]];
let results = [];
let request = requests.shift();
let handleRequests = (data) => fetch("/path/to/server", {
  method:"POST", body:data
})
.then(response => response.text())   
.then(res => {
  results.push(res);
  return requests.length ? handleRequest(requests.shift()) : results
});

handleRequest(request)
.then(res => console.log(res)
, (err) => console.log(err));

注意,如果订单不是要求的一部分,您可以将Promise.all()Array.prototype.map() 替换为.shift()

let handleRequests = (data) => fetch("/path/to/server", {
  method:"POST", body:data
})
.then(response => response.text());
Promise.all(requests.map(handleRequests))
.then(res => console.log(res)
, (err) => console.log(err));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-08
    • 1970-01-01
    • 2016-06-29
    • 2017-06-05
    • 2014-05-13
    • 2020-05-27
    • 2017-06-01
    相关资源
    最近更新 更多