我是javascript世界的新手,并尝试添加新的欧芹验证器,在我的验证方法中,我调用另一个具有回调结果的函数,其中我已经将我的逻辑检查到URL是图像与否。但验证器功能是在回调结果之前返回..我在最近2天坚持这个...任何帮助将非常感谢..下面是我的代码片段..
var invalid = false;
window.Parsley
.addValidator('validUrl', {
validateString : function(url) {
checkURLForImage(url , function(result){
if(result == "error" || result == "timeout" ){
console.log('this should print first');
invalid = true;
}
else{
invalid = false;
}
});
console.log('this should print in last');
return !invalid;
},
messages: {
en: 'Please upload only valid image url and correct any broken preview images',
}
});
答案 0 :(得分:1)
您似乎没有从validateString
返回任何内容,因此显然这不起作用。
如果checkURLForImage
仅适用于回调,则应从validateString
返回您在回调中解决或拒绝的承诺。
答案 1 :(得分:0)
感谢@Mark提示。我可以使用以下承诺来做到这一点:
window.Parsley.addValidator('validImgUrl', {
validateString : function(url) {
return new Promise(
function (resolve, reject) {
checkURLForImage(url)
.then(function (fulfilled) {
console.log('fulfilled -- > ' +fulfilled);
resolve(true);
}).catch(function (error) {
console.log('error -- > ' +error);
reject(false);
});
}
);
},
messages: {
en: 'Please upload only valid image url and correct any broken preview images',
}
});