我使用JS承诺转换alerify的确认方法以返回promise
。
没有详细说明,确认功能是这样的:
alertify.confirm = function(message onOk, onCancel) ...
这基本上会显示确认提醒,并根据用户是否点击ok
或cancel
按钮调用相应的onOk
或onCancel
功能。
所以无论如何,我已经在我的主应用程序中将此功能包装在这样的Promise
中:
function confirm(text) {
return new Promise(resolve, reject) {
alertify.confirm(text, resolve, reject);
}
}
var promise = confirm('Are you sure?');
promise.then(function() { alert('you clicked ok'); });
这可以按预期工作,但如果我点击Cancel
,那么我在控制台中收到此错误:
Uncaught (in promise)
我认为这是因为我没有在我的承诺中添加.catch
,然后警告调用reject
函数。如何检查拒绝功能是否已分配?
这样做的正确方法是什么?
function submit() {
return new Promise((resolve, reject) => {
//how to check if reject is assigned or not?
confirm('Are you sure') ? resolve() : reject();
});
}
function test() {
var promise = submit();
promise.then(() => alert('you clicked ok'));
promise.catch(() => alert('you clicked cancel'));
}

<input type="button" onclick="test()" value="test">
&#13;