2013-03-13 59 views
0

我試圖在使用JavaScript的應用程序中將少量用戶數據存儲到Windows Storage的roamingFolder方法/屬性中。我正在遵循開發中心的示例代碼,但沒有成功。我的代碼片段如下:(OR SkyDrive的鏈接,整個項目:https://skydrive.live.com/redir?resid=F4CAEFCD620982EB!105&authkey=!AE-ziM-BLJuYj7AWin 8應用程序:保存和檢索漫遊文件夾中的數據

filesReadCounter: function() { 
roamingFolder.getFileAsync(filename) 
    .then(function (filename) { 
     return Windows.Storage.FileIO.readTextAsync(filename); 
    }).done(function (data) { 
     var dataToRead = JSON.parse(data); 
     var dataNumber = dataToRead.count; 
     var message = "Your Saved Conversions"; 
     //for (var i = 0; i < dataNumber; i++) { 
     message += dataToRead.result; 
     document.getElementById("savedOutput1").innerText = message; 
     //} 
     //counter = parseInt(text); 
     //document.getElementById("savedOutput2").innerText = dataToRead.counter; 
    }, function() { 
     // getFileAsync or readTextAsync failed. 
     //document.getElementById("savedOutput2").innerText = "Counter: <not found>"; 
    }); 
}, 

filesDisplayOutput: function() { 
    this.filesReadCounter(); 
} 

我打電話導航模板的item.js文件的準備方法中filesDisplayOutput功能,來獲取最後一個會話的數據。但它總是顯示空白。我想保存多達5個用戶可能需要保存的數據。

回答

0

我在運行代碼時遇到了一些問題,但這與問題相關。底線,你實際上沒有閱讀文件。注意這個代碼,當履行承諾時沒有執行thendone

return Windows.Storage.FileIO.readTextAsync(filename);

我在你的榜樣解決方案砍死這一點,它的工作......這個典型的告誡是不是生產代碼:)

filesReadCounter: function() { 
     roamingFolder.getFileAsync(filename).then(
      function (filename) { 
       Windows.Storage.FileIO.readTextAsync(filename).done(
        function (data) { 
         var dataToRead = JSON.parse(data); 
         var dataNumber = dataToRead.count; 
         var message = "Your Saved Conversions"; 
         //for (var i = 0; i < dataNumber; i++) { 
         message += dataToRead.result; 
         document.getElementById("savedOutput1").innerText = message; 
         //} 
         //counter = parseInt(text); 
         //document.getElementById("savedOutput2").innerText = dataToRead.counter; 

        }, function() { 

         // readTextAsync failed. 
         //document.getElementById("savedOutput2").innerText = "Counter: <not found>"; 
        }); 
      }, 
      function() { 
       // getFileAsync failed 
      }) 
    }, 
+0

但不應嵌套承諾的返回值上傳遞父母承諾的下一個延續?當你這樣寫時,內部函數不會返回一個承諾,使外部函數無法等待任務的完成(假設某些時候可能需要這樣做)。 – 2013-03-15 16:05:54

相關問題