使用诺言时,如何正确地退出取消按钮而不会引发错误?我的代码会发出带有所需复选框的警报确认。该代码按应对用户执行的方式执行,但会在控制台窗口中引发错误:
没抓住(承诺)取消
//validation logic all passes...Now proceed to...
else
{
//determine and parse Discounts
var myLookup = document.getElementsByName("myLookup")[0].value;
$.post( "findthem.php", {myLookup: myLookup })
.done(function(json_data){
var theResponse1 = $.parseJSON(json_data);
myDiscountRate = theResponse1['ourDiscountFound'];
}).then( function(callback){
priceRate = priceRate * (1 - (.01 * myDiscountRate));
newRate = priceRate.toFixed(2);
}
swal({
title: "Confirm",
input: 'checkbox',
inputValue: 0,
type: "warning",
inputPlaceholder: 'I agree to <a href="#blahblahMore"></a> Your new Rate is :'+newRate,
showCancelButton: true,
confirmButtonText: 'Confirm',
showLoaderOnConfirm: true,
preConfirm: function(result) {
return new Promise(function(resolve, reject) {
if (result) {
$.post("my.php", {
Data: data
})
.done(
function(json_data) {
var data_array = $.parseJSON(json_data);
var moreDetails = '';
var resulting = 'error';
var details = "Transaction Declined"
if (data_array["trxApproved"] == true) {
resulting = 'success';
details = "Confirmed"
moreDetails = "<br>Approved<b>" + data_array["approved"] + "</b>" +
"<br>Details Code: <b>" + data_array["detailsCode"] + "</b>";
}
swal({
type: resulting,
title: details,
html: "<h1>Details: </h1>" + data_array["messagetext"] + moreDetails
});
}
);
resolve();
} else {
reject('You must agree to our Terms & Conditions ');
}
});
},
allowOutsideClick: false
}).then(function(json_data) {
})
});
更新(2017年1月):
此问题已在v7中修复:v7升级指南↗
您需要向Promise添加拒绝处理程序。另外,您可以使用.catch(swal.noop)
一种快速的方法来简单地排除错误:
swal('...')
.catch(swal.noop);
PS。您使用的软件包称为SweetAlert 2 ,而不是SweetAlert。在以后的问题中,请提及它,以便您获得更多相关的答案。
问题内容: 从数据库取回数据时遇到问题。我正在尽力解释这个问题。 1.如果在下面的代码中保留“ mode”:“ no- cors”,则可以使用Postman从服务器获取数据,而不能使用自己的服务器获取数据。认为这一定是我的客户端错误 当我删除“ mode”:“ no-cors”时,我得到2个错误:-Fetch API无法加载http:// localhost:3000 /。飞行前响应中的Acces
问题内容: 我正在将React代码转换为打字稿,tsconfig中的目标是es5。 在IE 11中运行时,出现错误“未定义承诺” 我知道我需要填充,但是如何? 我没有使用Babel。 以下是我的Webpack.config 问题答案: 在axios上面写这个对我有用,也许其他选择也可以 我主要面对的是IE中的缓存问题 安装webpack插件也可以 并包括 在webpack插件中 我将使用更多可能的
问题内容: 我对诺言仍然还很陌生,目前正在使用蓝鸟,但是在我不确定如何最好地处理它的情况下。 因此,举例来说,我在Express应用程序中有一个Promise链,如下所示: 所以我的行为是: 通过ID获取帐户 如果此时存在拒绝,请炸开并返回错误 如果没有错误,则将文档转换为模型 使用数据库文档验证密码 如果密码不匹配,则炸开并返回其他错误 如果没有错误,请更改密码 然后返回成功 如果有其他问题,请
问题内容: 因此,我希望我的第一级捕获是处理错误的捕获。反正有没有将我的错误传播到第一个陷阱? 参考代码,尚不可用: 问题答案: 使用新的异步/等待语法,您可以实现此目的。请注意,在编写本文时,并非所有浏览器都支持此功能,您可能需要使用babel(或类似的东西)来转换代码。
问题内容: 我使用ES6 Promises来管理我的所有网络数据检索,并且在某些情况下需要强制取消它们。 基本上,这种情况是这样的:我在UI上进行了预先输入搜索,在该UI中,将请求委派给后端必须基于部分输入执行搜索。尽管此网络请求(#1)可能需要一点时间,但用户继续输入,最终会触发另一个后端调用(#2) 这里#2自然优先于#1,因此我想取消Promise包装请求#1。我已经在数据层中缓存了所有Pr
问题内容: 我敢肯定,这是一个简单的答案,但是对于我自己的一生,我不知道该怎么做。 我具有以下用于上传到Google Cloud Storage的明确端点。它运作良好,并且来自google api的响应为我提供了一个唯一的文件名,我想将其传递回前端: 我通过调用将文件传递给它的简短函数来达到此端点: 该函数是从我的前端调用的,如下所示: 这最终将响应记录到控制台。但是,我在()中看不到任何答复 是