在我成功使用ajax的过程中,我正在获取pdf文件的位置。我要打开它。 但是问题是: 用window.open()打开pdf需要花费一些时间,所以在此之前我想在后台渲染它并显示控制台数据,在完全渲染之后应该给我看pdf文件。 我要等待pdf像承诺的解决一样打开。
window.open(response);
let html = `
It goes to my console div.
`;
$(document).find('#bottom-tab-content').html(html);
我也试图将html部分放在window.open()的顶部,但是它没有帮助。我想知道我的pdf是否已加载。
答案 0 :(得分:-3)
您可以尝试使用jQuery.deferred来实现。我为此创建了一个示例函数,该函数将等待pdfGeneration异步,然后在就绪后将其打开。
function getPDF() {
return '';
}
getPdf()
.then(function(response) {
console.log('response here' + response);
window.open(response);
}).fail(function(){
console.error('failed reposne');
});
答案 1 :(得分:-3)
您可以创建一个回调函数。
例如。
function displaySomething(text) {
console.log('Hello, lets say '+text);
}
function firstFunction(callback, text) {
console.log('So I am running first, mkeiii');
callback(text)
}
firstFunction(displaySomething, 'mkeiii');
如果要编写大量代码,那么弄清楚如何将所有内容放在方括号中可能是头疼的事,但是如果代码很小,您需要在获得响应之前先运行它,然后它才能做到。因此,从理论上讲,您可以这样做。
function loadPDF(link) {
console.log(link);
}
function loadAjax(callback) {
console.log('print console data');
//Do your ajax call. On succsess call back to other function.
//ON SUCCSESS display link
callback('http')
}
loadAjax(loadPDF);
很明显,OP不需要任何建议或讨论,他希望可以使用无任何问题的和平代码。