带有回调的欧芹验证器不起作用

Parsley Validator with call back not wroking

我是 javascript 世界的新手,正在尝试添加新的欧芹验证器,在我的验证方法中,我调用了另一个带有回调结果的函数,我在其中放置了我的逻辑来检查 URL是不是图像..但是验证器函数在回调结果之前返回..我从过去两天就一直坚持这个..任何帮助将不胜感激..下面是我的代码片段..

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',
    }
  });

您似乎没有从 validateString 中 return 获取任何内容,因此显然这行不通。

如果 checkURLForImage 仅适用于回调,您应该 return 来自 validateString 的承诺,您在回调中解决或拒绝。

祝你好运。

感谢@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',
    }
  });