如何在jquery click函数中等待确认

您好,我有一个要求,我需要等待确认才能完成。


注意:我无法在点击(大块)内触摸我的前辈的以下代码或将它们包裹起来.then(function(){..});


这是我尝试过但给出错误的:


async function showConfirmationAndWait(){

    $.alertable.confirm('You sure?').then(function() {

      return new Promise(function(res,rej){

           res({confirmed:true});

      });

    }, function() {

       return new Promise(function(res,rej){

           res({confirmed:false});

      });  

    });

}  


$('#await').on('click',function(){

    var promiseObj =  await showConfirmationAndWait(); //throwing error

    

    //...... big code with its own function call that i don't want to touch

 });

问题: 我想等到确认完成而不用包装老年人的整个代码.then(function(){..});


这是我尝试过的:


async function showConfirmationAndWait(){

    $.alertable.confirm('You sure?').then(function() {

      return new Promise(function(res,rej){

           res({confirmed:true});

      });

    }, function() {

       return new Promise(function(res,rej){

           res({confirmed:false});

      });  

    });

}  


$(function(){

    $('#await').on('click',function(){

        var promiseObj =  await showConfirmationAndWait(); //commented due to error

         console.log('after await promiseObj',promiseObj);

      

       //...... big code with its own function call that i don't want to touch

    });

}); 

<link href="https://cdn.rawgit.com/claviska/jquery-alertable/master/jquery.alertable.css" rel="stylesheet"/>

<script src="https://code.jquery.com/jquery-2.2.4.min.js"></script>

<script src="https://cdnjs.cloudflare.com/ajax/libs/velocity/1.2.3/velocity.ui.min.js"></script>

<script src="https://cdnjs.cloudflare.com/ajax/libs/velocity/1.2.3/velocity.min.js"></script>

<script src="https://rawgit.com/claviska/jquery-alertable/master/jquery.alertable.min.js"></script>



<button id="await">Show confirmation wait and proceed next line</button>


智慧大石
浏览 71回答 1
1回答

一只名叫tom的猫

您需要重写showConfirmationAndWait 以实际等待确认并返回结果。还将您的整个处理程序标记为async.async function showConfirmationAndWait() {&nbsp; try {&nbsp; &nbsp; await $.alertable.confirm('You sure?');&nbsp; &nbsp; return true&nbsp; } catch {&nbsp; &nbsp; return false&nbsp; }}$(function() {&nbsp; $('#await').on('click', async function() {&nbsp; &nbsp; var promiseObj = await showConfirmationAndWait();&nbsp; &nbsp; console.log('after await promiseObj', promiseObj);&nbsp; &nbsp; //...... big code with its own function call that i don't want to touch&nbsp; &nbsp; console.log('Some scary logic goes here. It should be printed after confirmation.');&nbsp; });});<link href="https://cdn.rawgit.com/claviska/jquery-alertable/master/jquery.alertable.css" rel="stylesheet" /><script src="https://code.jquery.com/jquery-2.2.4.min.js"></script><script src="https://rawgit.com/claviska/jquery-alertable/master/jquery.alertable.min.js"></script><button id="await">Show confirmation wait and proceed next line</button>
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript