2013-03-04 110 views
0

假設我有以下代碼,它使用canvasResize插件調整圖像大小,然後返回處理的Blob數據。爲什麼這個javascript值在它聲明的範圍內爲null,但不在一個較窄的範圍內

如果我將falert變量放在現在的位置,f不會爲空。但是,如果我在函數結束前立即檢查f變量,那麼它將爲空。

function resizeFile(file){ 
    var f=null; 
    $.canvasResize(file, 
     { 
      width: 400, 
      height: 0, 
      crop: false, 
      quality: 100, 
      callback: function (data) 
       { 
        // Add file data 
        f = $.canvasResize('dataURLtoBlob', data) 
        if(f!=null){ 
           alert(f) 
          } 
          else{ 
           alert("file blob is null") 
          } 
        $('body').css("background", "url("+data+")") 
       } 
     }); 


     return f; 
    } 
+0

謝謝,這是非常有用的:) – Ankur 2013-03-04 03:42:26

+0

似乎像以前的評論刪除了他/她的評論。 – Ankur 2013-03-04 03:42:49

回答

2

在你的代碼中f變量是在調整大小完成後,其執行callback函數初始化。

所以,return f被稱爲第一個,然後callback功能,所以它會是null

+0

謝謝你是對的,以前的評論者提到,這是因爲回調的異步性質,由於某種原因,它一開始沒有點擊。 – Ankur 2013-03-04 04:14:05

相關問題