加载此XML文件后,then函数未触发。我没有收到任何错误,我可以在网络选项卡中看到文件加载。我在这里做错了什么?
$.when(
$.get("data/data.xml", {}, function (file) {
xml = file;
})
).then(function(){
console.log("Loaded");
});
答案 0 :(得分:3)
在这种情况下,为什么要使用this.aliasCtrl = formBuilder.control('', [], [(control: AbstractControl) => {
return new Promise(resolve => {
if(control.value === 'aaa') {
resolve({error: true});
} else {
resolve(null);
}
});
}
]);
this.nameGroup = formBuilder.group({
firstName: formBuilder.control('', []),
lastName: formBuilder.control('', [])
}, {
asyncValidator: (group: FormGroup) => {
return new Promise(resolve => {
if(group.value.firstName === 'aaa' && group.value.lastName === 'aaa') {
resolve({error2: true});
} else {
resolve(null);
}
});
}
});
this.formGroup = formBuilder.group({
name: this.nameGroup,
alias: this.aliasCtrl
});
,$.when
方法会返回一个promise(或延迟),因此您应该可以直接在该方法上链接get
then
答案 1 :(得分:0)
我建议将jQuery推荐的回调函数用作here。
jqXHR.success(),jqXHR.error()和jqXHR.complete()回调 从jQuery 3.0开始删除方法。 您可以使用jqXHR.done(), jqXHR.fail()和jqXHR.always()改为。
在您的情况下,您可以使用done()
或always()
。
如果你想成功执行。
$.get("data/data.xml", {}, function (file) {
xml = file;
} ).success( function(){
console.log("Loaded");
} );
如果您想在无论成功或错误的情况下执行。
$.get("data/data.xml", {}, function (file) {
xml = file;
} ).always( function(){
console.log("Loaded");
} );
答案 2 :(得分:-1)
在这种情况下,这是因为xml格式错误。看起来如果加载了xml但无法解析,则$ .get回调未被触发但不会引发错误。