2013-03-13 1 views
0

JavaScript를 사용하는 응용 프로그램에서 Windows Storage의 roamingFolder 메소드/속성에 사용자 데이터를 저장하려고합니다. 나는 Dev Center의 샘플 코드를 따르고 있지만 성공하지는 않습니다. 다음과 같이 내 코드는 다음과 같습니다 (OR 전체 프로젝트의 스카이 드라이브 링크 : https://skydrive.live.com/redir?resid=F4CAEFCD620982EB!105&authkey=!AE-ziM-BLJuYj7A)Win 8 Apps : 로밍 폴더에 데이터 저장 및 검색

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

나는 코드를 실행하는 데 약간의 문제가 있었지만 그 질문에는 접선입니다. 결론은 실제로 파일을 읽지 않는 것입니다. 약속이 이행 될 때 실행할이 코드는 then 또는 done입니다.

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

되지 않고 중첩 된 약속의 반환 값에 전달되어서는 안된다 부모 약속의 다음 연속인가? 그런 식으로 작성할 때 내부 함수는 약속을 반환하지 않으므로 외부 함수가 작업 완료를 기다릴 수 없습니다 (일부 시점에서이 함수가 필요할 수 있다고 가정). –