Javascript 控制VueJs中的事件流
我有一个处理HTTP请求的Vue指令。我试图做的是利用承诺,并将SweetAlert引入到流程中。我是第一个向你开火的人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();
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
-布尔值没有。那么
方法,那么代码注定要失败