![](/img/trans.png)
[英]Access to global variables inside Parse.Cloud.httpRequest{()}
[英]Calling Parse.Cloud.httpRequest inside another httpRequest
我正在嘗試調用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);
將被調用,您的雲功能將退出。
並行承諾對於這種情況,您想要使用的是並行承諾。 文檔在這里:
https://parse.com/docs/js_guide#promises-parallel
這里有關於Parse答案的相關問題/答案: https : //www.parse.com/questions/parallel-promises-with-parsepromisewhen
未來的問題上面的內容適用於簡單的功能,但是你在for循環中做了兩件事,這需要更多的時間
cropped.save();
你應該等待這個功能返回
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.