JS在函数内如何实现不执行完内部函数不return结果

在项目中遇到一个问题

     <asp:Button runat="server" ID="btnCancel" Text="取消确认" OnClick="btnCancel_Click" OnClientClick="return confirmSafsW('取消确认会将之后已确认的凭证全部取消,确定取消?')" />
     

服务端函数OnClick会根据OnClientClick返回的true or false去判断执行不执行。

var confirmSafsW = function (str) {
var flag;
function flagFun(){
    if (flag)
    {
        return true;
    }
    else{
        return false;
    }
}
if (alertify.confirm(str, function (e) { if (e) { alertify.success("确定"); flag = true; } else { alertify.error('取消'); flag = false } })
 )
  return flagFun();
}

我在flagFun判断之前函数已经执行完毕 外部获得了默认true ,我如何在

 if (alertify.confirm(str, function (e) { if (e) { alertify.success("确定"); flag = true; } else { alertify.error('取消'); flag = false } })

这段函数执行完毕之后才return flagFun()

阅读 4.6k
4 个回答

1、先确定 alertify.confirm 有没有返回值,没有返回值的话,你的 if(alertify.confirm) 是 false,return flagFun() 不会执行。
2、alertify.confirm 有返回值的话可以使用await。

因为你回调函数里面的变量是无法改变外面的变量的值,在事件执行完毕后,里面的变量被回收了

如果你的confirm是异步函数话.不能够返回正确的flagFun().
你只能将后续代码改成回调来执行

confirmSafsW执行时候,只是调用了alertify.confirm的方法,所以你需要这个点击确定后才拿flag的值,

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题