簡體   English   中英

我如何等待帶有打字稿的promise()。done()?

[英]How can I await promise().done() with typescript?

我知道如何創建一個標准的Promise並對其使用async / await,但是我該如何等待帶有TypeScript的jquery promise()。done()?

當前:

$('#sun').hide('slide', {direction:'right'}, 200).promise().done(function () {
    $('#rain').show('slide', {direction:'left'}, 200).promise().done(function () {
        console.log('ok!');
    });
});

我想用這種方式做,但是不起作用:

await $('#sun').hide('slide', {direction:'right'}, 200).promise().done(); 
await $('#rain').show('slide', {direction:'left'}, 200).promise().done();
console.log('ok!');

嘗試從您的promise()調用的末尾刪除done() promise()調用。 如果不專門研究jQuery Promise實現,我會想象沒有參數的調用done()返回undefined或其他無法等待的結果,因此您正在嘗試await undefined

嘗試等待promise()調用:

await $('#sun').hide('slide', {direction:'right'}, 200).promise(); 
await $('#rain').show('slide', {direction:'left'}, 200).promise();
console.log('ok!');

一個jQuery的承諾,以相同的方式工作作為香草承諾

有關其工作方式的示例,請轉換為:

 var div = $( "<div>" ); div.promise().done(function( arg1 ) { // Will fire right away and alert "true" console.log( this === div && arg1 === div ); }); 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> 

對此:

 var div = $( "<div>" ); async function run(){ const arg1 = await div.promise(); console.log(arg1 === div ); } window.onload = run; 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> 

解:

await $('#sun').hide('slide', {direction:'right'}, 200).promise(); 
await $('#rain').show('slide', {direction:'left'}, 200).promise();
console.log('ok!');

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM