簡體   English   中英

從javascript中的單獨線程傳遞/訪問值

[英]Passing/Accessing values from separate thread in javascript

我正在嘗試使用在另一篇文章中找到/編輯的以下代碼。 我想使用函數“ IsValidImageUrl()”即時即時返回結果。 由於此函數在單獨的線程中運行,因此在獲取值時遇到了麻煩,例如,如果我具有“ return True”; 代替“ isValid = true;” 我總是得到“未定義”作為回報。 因此,我嘗試使用全局變量“ isValid”,但它似乎總是落后一步,這意味着我需要兩次調用該函數,才能獲得第一次調用的結果。

我從根本上缺少什么? 還是您可以建議我可以使用的另一種方法?

謝謝!

<script>
    var isValid;
    function IsValidImageUrl(url) {
        $("<img>", {
                      src: url,
                      error: function() { isValid=false; },
                      load: function() { isValid=true; }
                    });
     }

    IsValidImageUrl("https://www.google.com/logos/2012/hertz-2011-hp.gif");
    alert(isValid);
    IsValidImageUrl("http://google.com");
    alert(isValid);
</script>

問題是您必須等待映像加載或失敗,然后才能使用狀態。 最好的方法是為IsValidImgUrl函數提供一個回調函數(或單獨的函數,以確保成功和失敗)在加載圖像或發生錯誤時運行。
在此示例中,還將image元素傳遞給回調函數,以便它們知道調用了哪個圖像。

 function IsValidImageUrl(url, okFunc, errFunc) { var image = document.createElement("IMG"); image.src = url; image.onload = function() {okFunc(image)}; image.onerror = function() {errFunc(image)}; } function imageLoadSucces(image) { alert("image loaded: " + image.src); } function imageLoadFail(image) { alert("image load error: " + image.src); } IsValidImageUrl("https://www.google.com/logos/2012/hertz-2011-hp.gif", imageLoadSucces, imageLoadFail); IsValidImageUrl("http://google.com", imageLoadSucces, imageLoadFail); 

暫無
暫無

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

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