如何抽象 Javascript Promise 并保留 .then

我有一个名为 的函数sweetAlertConfirmationMessage。它接受一条消息,将其显示为文本,然后等待用户确认或取消弹出警报。


function sweetAlertConfirmationMessage(message) {

    Swal.fire({

        title: T('SWEETALERT_GENERAL_CONFIRMATION_TITLE'),

        text: message,

        icon: 'warning',

        showCancelButton: true,

        confirmButtonColor: T('SWEETALERT_CONFIRM_BUTTON_COLOR'),

        cancelButtonColor: T('SWEETALERT_CANCEL_BUTTON_COLOR'),

        cancelButtonText: T('SWEETALERT_CANCEL_BUTTON_TEXT'),

        confirmButtonText: T('SWEETALERT_CONFIRM_BUTTON_TEXT'),

    })

    .then(result => {

        return new Promise(function (resolve, reject) {

            resolve(true);

        });

    })

    .catch(result => {

       console.log(result); 

    });

}

我想要实现的目标如下:


sweetAlertConfirmationMessage(T('SWEETALERT_MESSAGE_DELETE_PRODUCT_FROM_CART'))

    .then(

        // Run code here.

    )

但是,我收到以下错误:

未捕获(承诺中)类型错误:无法读取未定义的属性“then”

这是我观察到正在发生的事情:

  1. sweetAlertConfirmationMessage 方法已运行。

  2. 在 Promise 被解决之前,代码继续离开函数,进入 .then(// Run code here)

  3. .then 没有运行,因为它没有承诺采取行动

  4. 它显示通知消息并等待用户确认或取消。

console.log(结果) 不显示任何内容。

我研究了以下主题:

  1. 异步和等待

  2. Promise、.then 和 .catch

  3. 承诺链

如何以所需的顺序执行此代码:

  1. 显示确认消息

  2. 等待承诺:如果确认则为 true,如果单击其他任何内容则为未定义

  3. 运行 .then ( // 在此处运行代码 )

我希望这个答案写得足够好,以帮助将来的其他人。


白板的微信
浏览 51回答 1
1回答

森栏

function sweetAlertConfirmationMessage(message) {    return Swal.fire({        title: T('SWEETALERT_GENERAL_CONFIRMATION_TITLE'),        text: message,        icon: 'warning',        showCancelButton: true,        confirmButtonColor: T('SWEETALERT_CONFIRM_BUTTON_COLOR'),        cancelButtonColor: T('SWEETALERT_CANCEL_BUTTON_COLOR'),        cancelButtonText: T('SWEETALERT_CANCEL_BUTTON_TEXT'),        confirmButtonText: T('SWEETALERT_CONFIRM_BUTTON_TEXT'),    })}只需从您的函数返回承诺即可。你可以这样使用它:sweetAlertConfirmationMessage('msg').then(x => {})
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript