Javascript 控制VueJs中的事件流

Javascript 控制VueJs中的事件流,javascript,promise,vue.js,sweetalert,Javascript,Promise,Vue.js,Sweetalert,我有一个处理HTTP请求的Vue指令。我试图做的是利用承诺,并将SweetAlert引入到流程中。我是第一个向你开火的人 bind: function () { this.el.addEventListener('click', this.onRequestSubmit.bind(this)); }, 并在请求提交时提交 onRequestSubmit: function (e) { e.preventDefault();

我有一个处理HTTP请求的Vue指令。我试图做的是利用承诺,并将SweetAlert引入到流程中。我是第一个向你开火的人

    bind: function () {
        this.el.addEventListener('click', this.onRequestSubmit.bind(this));
    },
并在请求提交时提交

    onRequestSubmit: function (e) {
        e.preventDefault();

        this.fireFlashMessage()
        .then(this.vm.$http[this.getRequestType()](this.el.getAttribute("data-delete-url"), this.aggregateData()))
        .then(this.onComplete.bind(this))
        .catch(this.onError.bind(this));
    },
我希望用户确认后fireFlashMessage返回true,以便onRequestSubmit可以委托请求


我的问题是:我是否应该将fireFlashMessage包装成一个承诺,然后在呼叫成功返回时继续执行?我对承诺还很陌生,很难把自己的脑袋绕在承诺上

windows使用回调函数,而不是承诺。然后在回调中,你会使用如下承诺

onRequestSubmit: function (e) {
    e.preventDefault();

    swal({
            title: "Are you sure?",  
            showCancelButton: true,   
            confirmButtonText: "Yes"
        }, 
        this.onRequestConfirm.bind(this)
    );
},
onRequestConfirm: function() {
    this.vm.$http[this.getRequestType()](this.el.getAttribute("data-delete-url"), this.aggregateData())
    .then(this.onComplete.bind(this))
    .catch(this.onError.bind(this));
}

编辑:删除此.fireFlashMessage(),因为它不再使用该函数,不过如果您想再次重构它,可以使用回调函数,而不是承诺。然后在回调中,你会使用如下承诺

onRequestSubmit: function (e) {
    e.preventDefault();

    swal({
            title: "Are you sure?",  
            showCancelButton: true,   
            confirmButtonText: "Yes"
        }, 
        this.onRequestConfirm.bind(this)
    );
},
onRequestConfirm: function() {
    this.vm.$http[this.getRequestType()](this.el.getAttribute("data-delete-url"), this.aggregateData())
    .then(this.onComplete.bind(this))
    .catch(this.onError.bind(this));
}

编辑:删除
this.fireFlashMessage()
,因为它不再使用该函数,尽管您可以根据需要再次重构它

您知道您的代码意味着
fireFlashMessage
返回一个
承诺,而不是一个布尔值-如果它返回
true
,则布尔值没有
。然后
方法,因此,代码注定要失败。您知道您的代码意味着
fireFlashMessage
返回一个
Promise
,而不是布尔值-如果它返回
true
-布尔值没有
。那么
方法,那么代码注定要失败