簡體   English   中英

在另一個httpRequest中調用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循環中做了兩件事,這需要更多的時間

  1. cropped.save(); 你應該等待這個功能返回
  2. 在雲功能中裁剪100個圖像可能無法正常工作。 雲功能僅運行大約15秒。 如果作物需要太長時間,有些會發生,有些則不會。 您可以執行某些操作,例如將圖像排隊以進行裁剪並在預定作業中執行這些裁剪。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM