簡體   English   中英

解析雲代碼上的for循環的奇怪行為。

[英]Weird and surprising behavior of for loop on parse cloud code.

我正在解析雲代碼上運行一個非常基本的hello world代碼。 我在雲代碼中放入了一個簡單的for循環,只是為了跟蹤,所以編寫了console.log並打印了“ i”的值。 這就是它的樣子..

// Use Parse.Cloud.define to define as many cloud functions as you want.
// For example:
Parse.Cloud.define("hello", function(request, response) {
   for(var i = 0;i<5;i++)
    {
      console.log("Count : " + i);
    }
response.success("Hello world!");
});

理想情況下,它應該按順序打印計數..但是我的日志中的輸出是這樣的..

I2014-08-14T08:06:39.751Z] v9: Ran cloud function hello with:
  Input: {}
  Result: Hello world!
I2014-08-14T08:06:39.767Z] Count : 2
I2014-08-14T08:06:39.769Z] Count : 1
I2014-08-14T08:06:39.770Z] Count : 4
I2014-08-14T08:06:39.771Z] Count : 3
I2014-08-14T08:06:39.781Z] Count : 0

我需要為我的實現循環調用一個函數。 但它無法正常工作。 for循環是否有問題,或者在解析雲代碼時是否有其他不同的方法來實現for循環。 我無能為力。 請幫我解決這個問題。 提前致謝。

沒有任何錯誤。 您只是看到一個事實,Parse.com CloudCode和幾乎所有將要遇到的JavaScript都是異步運行的。

console.log不會像在本地系統的外殼中運行的某些代碼那樣立即打印到控制台。 這更像是對系統說“請盡快打印此console.log消息”,這取決於系統何時執行。 您所知道的只是它會在某個時間發生。

日志記錄並不那么重要(並且Parse.com控制台很糟糕),因此沒有一種方法可以控制此行為,但是對於順序很重要的操作,可以在操作完成后獲取回調以安排下一個操作。 例如

console.log("Count : 0", { success: function() {
    console.log("Count : 1", { success: function() {
            console.log("Count : 2", { success: function() {
        }); 
    }); 
}); 

請注意,這只是一個示例-您實際上不能運行該代碼,因為console.log不支持回調。 查看Parse.Query的功能。

該代碼可能會變得有些笨拙和縮進,因此當您深入研究它時,應該開始學習如何使用Promise。 請參閱Parse.Promise。

暫無
暫無

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

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