簡體   English   中英

以Base64格式獲取圖像作為全局變量

[英]Getting an image in Base64 format as global variable

我正在嘗試獲取Base64格式的圖像

var codedPic;
var purl = 'http://upload.wikimedia.org/wikipedia/commons/4/4a/Logo_2013_Google.png';

var codedPic = convertImgToBase64(purl, function(base64Img){ console.log('attempt 1: ' + base64Img); });

console.log('attempt 2: ' + codedPic);

它正在獲取嘗試1的結果,但是對於嘗試2,它顯示為未定義。 但是我也需要它工作。 誰能幫我嗎?

請隨時修改此jsfiddle: http : //jsfiddle.net/s7x0otdc/2/

(在小提琴中)完成轉換后,您將調用回調,因此,codedPic變量中沒有存儲任何內容。 您可以使用return codedPic;修復它return codedPic; 而不是使用回調,或者您可以在該回調函數中執行所需的所有操作(因為完成回調函數后,您會丟失“她”的變量)

我想全局var有某種方法..但是現在我不知道該怎么做

編輯:

新的演示向您展示如何模塊化代碼。 編碼的畫面轉換功能外提供(更精確地在全局變量codedPic )。 但是您必須等待觸發回調,以確保它現在具有正確的值。

http://jsfiddle.net/s7x0otdc/7/


好吧,您的代碼中有幾個錯誤。

  1. 正如Jimmmy指出的那樣,您的函數不會返回任何內容,因此賦值var codedPic = convertImgToBase64(purl /* ... */ ); 是沒有用的,因為codedPic將保持undefined
  2. 時間閱讀如何從異步調用返回響應? 以了解為什么需要使用回調,並且必須將依賴於服務器響應的所有代碼放入回調中。 由於轉換函數需要等待圖像的load事件,因此將來您會在未知的時刻將數據放入dataURL中。 當此刻到來時,JS將觸發您的回調並將其作為參數提供給您,該數據將按照您的轉換函數的指定。 因此,只有您的回調才能安全地將所需數據分配給全局變量,並觸發依賴於該數據的任何操作。

演示: http//jsfiddle.net/s7x0otdc/5/

暫無
暫無

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

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