gpt4 book ai didi

javascript - 在另一个 httpRequest 中调用 Parse.Cloud.httpRequest

转载 作者:行者123 更新时间:2023-11-29 10:17:26 24 4
gpt4 key购买 nike

我正在尝试调用 API 来检索数据列表,此数据将帮助我获取图像源。因此,对于每个数据条目,我尝试调用图像 url 并使用 Parse Image 进行一些图像处理。问题是,内部的 httpRequest 从来没有被触发过……我不知道是什么原因……由于 Parse.com 不是那么受欢迎,我几乎找不到解决这种情况的办法……

这是我的代码:

Parse.Cloud.httpRequest({
url: api_url,
method: 'POST'
}).then(function(data){
data = JSON.parse(data.text);
var entries = data.entries;
for (var i = 0; i < 100; i++) {
entry = entries[i][1];
var image_url = composeImgURL(entry);
Parse.Cloud.httpRequest({
url: image_url,
success: function(httpResponse){
var image = new Image();
image.setData(httpResponse.buffer);

var size = Math.min(image.width(), image.height());
if(size > 300){
var ratio = 300 / size.toFixed(2);
image.scale({
ratio: ratio.toFixed(2)
});
}
image.setFormat("JPEG");
var base64 = image.data().toString("base64");
var cropped = new Parse.File("thumbnail.jpg", { base64: base64 });
cropped.save();
entries[i][1]['url'] = cropped.url;
},
error: function(httpResponse){
console.log(httpResponse);
}
});
}
return entries;
}).then(function(entries){
response.success(entries);
});

最佳答案

您当前的代码在您的 100 个 http 请求中的任何一个完成之前,您的代码将到达 return entries 语句。一旦发生这种情况,行 response.success(entries); 将被调用,您的云函数将退出。

并行 promise 对于这种情况,您要使用的是并行 promise 。文档在这里:

https://parse.com/docs/js_guide#promises-parallel

这里有一个关于解析答案的相关问题/答案:https://www.parse.com/questions/parallel-promises-with-parsepromisewhen

future 的问题以上将适用于简单的功能,但是您在 for 循环中还做了 2 件事,这将需要更多时间

  1. cropped.save(); 你应该等待这个函数返回
  2. 在云函数中裁剪 100 张图像可能行不通。云函数仅运行大约 15 秒。如果裁剪需要太长时间,有些会发生,有些不会。您可以执行一些操作,例如将图像排队以进行裁剪并在计划的作业中执行这些裁剪。

关于javascript - 在另一个 httpRequest 中调用 Parse.Cloud.httpRequest,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18863718/

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