Javascript:我想在程序中实现异步/等待之类的功能。但是我的代码块并不能保证

时间:2018-11-20 07:15:26

标签: javascript jquery promise async-await es6-promise

在我成功使用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是否已加载。

2 个答案:

答案 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不需要任何建议或讨论,他希望可以使用无任何问题的和平代码。