我想在所有請求完成後才能啓動我的應用程序。如何使用jquery promise方法檢查請求中的所有圖像是否已轉換爲位64,然後啓動應用程序。在此先感謝您的幫助:)如何將jQuery承諾綁定到事件
function BuildImageUrl(src) {
var dataURL;
var img = new Image();
img.src = src;
img.onerror = function(err) {
console.log(err)
};
img.onload = function() {
debugger;
var canvas = document.createElement("canvas");
canvas.width = this.width;
canvas.height = this.height;
var ctx = canvas.getContext("2d");
ctx.drawImage(this, 0, 0);
dataURL = canvas.toDataURL("image/jpg");
return dataURL;
};
}
OData.defaultHttpClient.enableJsonpCallback = false;
OData.read("request url",
function (data, request) {
debugger;
data.results.forEach(function(model,index){
var path = "image path from response;
var url = BuildImageUrl(path);
});
}
);
你需要'BuildImageUrl'返回一個'promise'( 「承諾返回一個URL」)使用'在該方法中創建的「延遲」對象。當圖像加載事件觸發時,延遲被解析。收集承諾並使用'$ .when'來傾聽他們所有的完成。 – 2014-10-20 09:24:51
注意:目前您正試圖從事件回調中返回dataURL。該值不會從調用到'BuildImageUrl'中返回。該值簡單地返回到'onload'事件調用者(並扔掉) – 2014-10-20 09:28:26
謝謝@TrueBlueAussie的幫助:),我知道JavaScript和jQuery,所以我不知道如何寫入緩存,這將是gr8幫助如果你可以投入更多的光線 – priyanka 2014-10-20 10:12:47