Javascript: я хочу добиться чего-то вроде async / await в моей программе.Но блоки моего кода не обещают - PullRequest
0 голосов
/ 20 ноября 2018

В моем успехе моего AJAX, я получаю местоположение моего файла PDF.Я хочу открыть это.Но проблема в том, что для открытия pdf с помощью window.open () требуется некоторое время, поэтому перед этим я хочу отобразить его в фоновом режиме и отобразить данные консоли. И после его полной визуализации он должен показать мне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 голосов
/ 20 ноября 2018

Вы можете сделать функцию обратного вызова.

так например.

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);

Очевидно, что ОП не хочет никаких предложений или обсуждений, ему нужен код, который бы работал без каких-либо вопросов.

0 голосов
/ 20 ноября 2018

Вы можете попытаться реализовать это, используя jQuery.deferred.Я сделал пример функции, которая будет ждать асинхронного pdfGeneration, а затем откроет его, как только он будет готов.

function getPDF() {
    return '';
}

getPdf()
  .then(function(response) {
    console.log('response here' + response);
    window.open(response);
  }).fail(function(){
      console.error('failed reposne');
  });
...