我正在使用JavaScript和jQuery來編寫我的網站,但我得到以下問題。如何在加載承諾對象時添加加載動畫?
我想睡覺線程並只顯示加載動畫,直到承諾對象完全加載到我的網站。
我不知道該怎麼做,任何人都可以幫忙嗎?
@ A.Wolff 因爲我有,當我使用的是PDF.JS插件這個問題。我試圖在其上面聲明一個自定義的類。
以下是我自定義的類
function WhiteBoardPdf3(canvasContext,url){
this.canvasContext=canvasContext;
this.url=url;
this.pdfOriPromise=PDFJS.getDocument(url);
this.pdfPromise=Promise.cast(this.pdfOriPromise);
this.pdfDoc=null;
/*----Here is the problem------*/
this.pdfPromise.then(function getPdf(_pdfDoc){
this.pdfDoc=_pdfDoc
});
/*----------------------------*/
this.pageNum=1;
this.scale=1;
this.renderPage(1);
}
WhiteBoardPdf3.prototype.getPdfPromise=function(){
return this.pdfPromise;
}
WhiteBoardPdf3.prototype.renderPage=function(){
var num=this.pageNum;
var scale=this.scale;
var canvasContext=this.canvasContext;
var canvas=canvasContext.canvas;
var canvasClassName=canvas.className;
var allCanvas=document.getElementsByClassName(canvasClassName);
var canvasContainer=document.getElementById("whiteBoardLayerContainer");
this.pdfPromise.then(function getPdf(_pdfDoc){
_pdfDoc.getPage(num).then(function(page){
var viewport=page.getViewport(scale);
for(var i=0;i<allCanvas.length;i++){
allCanvas[i].height=viewport.height;
allCanvas[i].width=viewport.width;
}
canvasContainer.style.width=viewport.width+'px';
var renderContext={
canvasContext: canvasContext,
viewport: viewport
}
page.render(renderContext);
});
});
}
WhiteBoardPdf3.prototype.getPdfNumOfPages=function(){
this.pdfDoc.numPages;
}
而且PDFJS.getDocument(URL)將返回一個承諾對象。
但是,問題是當我構造這個類並在主程序中調用getPdfNumOfPages()函數時。我注意到程序將在「pdfDoc」(promise對象)完成加載之前調用getPdfNumOfPages()函數。所以我想睡覺線程並在promise對象完成加載之前顯示加載動畫。所以在加載「pdfDoc」之後,getPdfNumOfPages()函數將運行。
你能告訴我們,您目前使用的代碼,並在具體的問題是在該代碼? –
你在哪裏卡住了,因爲基本上沒有什麼難以在設置承諾時顯示加載動畫並在承諾完成時將其刪除,例如使用'always()'回調 –
@GeorgeStocker我正在使用的代碼被添加在問題中,謝謝。 – Galazzo