2013-04-04 44 views
1

我在循環中使用file.saveURL,它的工作良好,但我看到一些平板的東西。基本上我循環了大約70個圖像,然後抓住他們的uri後,他們被保存和本地存儲,所以我可以然後用它來顯示在應用程序trigger.io file.saveURL和循環

什麼情況是,一旦循環完成,我顯示圖像但隨機的一些圖像是相同的。我已驗證正確的URL正在通過,但它的好像,我不知道肯定,但也許該功能沒有完成前,並以某種方式覆蓋它?

這使得最多的因爲這個問題通常發生在圖像緊挨着彼此。

所以我想我的問題是,file.saveURL只能在一個方面工作,就像它必須通過同步?

如果是這種情況,推薦的方法是循環和保存這些圖像。

謝謝!

EDIT

這是一個基本的樣品(I有一些條件的東西在裏面,但是這是主要部分)

我已存儲的JSON對象和我遍歷它

$(data).each(function(i){ 

     var slcval = 'speaker' + this.SID; 
     var imageID = 'simageid' + this.IMAGE; 
     var speakerImage = "http://mydomain.com/users/images/speakers/" + this.IMAGE; 

//then I call the save url function 
     saveURLImage(speakerImage,slcval,'speaker',this.SID,imageID); 
} 

這將循環播放我的圖像並調用保存圖像功能,然後執行保存URL功能

function saveURLImage(url,ID,type,extraVal,imageID){ 
forge.file.saveURL(url, function (file) { 
     forge.file.URL(file, function (url) { 
     var fileObject = JSON.stringify(url); 

     localStorage.setItem(ID, fileObject); 


     }) 
     }); 
} 

這是一個簡單的版本,我有一些其他部分設置了一些本地存儲變量,但這是主要調用。

+0

代碼重現該問題將是有益的 - 無論是用於保存網址代碼然後顯示圖像會很棒! – monk 2013-04-04 15:56:17

+0

我想知道如果它可能是如何保存文件,因爲它使用紀元日期的文件名,但只有第二,所以如果兩個項目在同一秒被調用會發生什麼? – proxim0 2013-04-04 19:55:35

+0

感謝您的代碼示例。我現在自己重新創建了這個,我認爲你可能是正確的時間問題。應該能夠在不太遙遠的將來得到解決!這聽起來像下面,你已經意外地解決這個問題(可能與setTimeout?)。 – monk 2013-04-05 13:33:05

回答

1

所以我的問題是一個範圍問題

因此,如果其他人來arrocss這個,我發現這個thred,幫助了

Javascript: function in setTimeout and references

基本上我所做的就是創造一個具有announmous功能功能,因此範圍將是正確的

函數saveURLImage {url,ID,類型,extraVal,imageID){ (function(){ saveURLImageScop ed(url,ID,type,extraVal,imageID) })(); }

所以函數名稱仍然和以前一樣,但我改名爲主要功能saveURLImageScoped,現在它有它自己的變量範圍