javascript - 如何在 javascript 中将异步调用转换为同步调用?

标签 javascript node.js asynchronous

我在客户端使用 javascript,在服务器端使用 node.js,实际上我已经尝试对输入字段进行远程验证,结果必须是 bool 值并且它应该基于服务器调用,我的代码如下,

 jQuery.validator.addMethod("remoteValidation", function(value, element) {

    var accountName = $("#accountName").val();
    var accountType = $("#accountType").val();
    var valid = this.Validation(accountType,accountName);
   //returning undefined becoz return statement executing before server side execution
    return valid;

}, "Entered email or username already exists");

 this.validation = function(accountType,accountName,cb){
    var valid =null;
  ss.rpc('AccountsManagement.userNameChecker',accountType,accountName,function(res) {
            // res will return boolean
        valid = res;
    });
            //valid is null becoz this line is executing before valid = res line.
    return valid;
};

我的服务器端代码:

   services.imAccountsService.getAllImAccounts(accountType,accountName,
   function(err,result){
    if(err){
    return;
    }
    if(result == null){
       res(true);
    }
    else{
       res(false);
    }

   });

我的问题是异步执行,在这种情况下如何使代码同步..

最佳答案

在 jquery 验证方法中添加了功能。

   if(param.type === "rpc"){
            var args = param.data.remoteArgs();
            ss.rpc(param.url, args, function(response) {
                validator.settings.messages[element.name].remote = previous.originalMessage;
                var valid = response === true;
                if ( valid ) {
                    var submitted = validator.formSubmitted;
                    validator.prepareElement(element);
                    validator.formSubmitted = submitted;
                    validator.successList.push(element);
                    validator.showErrors();
                } else {
                    var errors = {};
                    var message = response || validator.defaultMessage( element, "remote" );
                    errors[element.name] = previous.message = $.isFunction(message) ? message(value) : message;
                    validator.showErrors(errors);
                }
                previous.valid = valid;
                validator.stopRequest(element, valid);
            });
        }

它工作正常....谢谢大家...

关于javascript - 如何在 javascript 中将异步调用转换为同步调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13227231/

相关文章:

javascript - Google map - 不显示但以 HTML 形式加载

javascript - 在 node.js 中更新查询

javascript - 如何在 Node.js HTTP2 中获取请求体?

design-patterns - 有没有任何设计模式对使用套接字实现异步通信有帮助?

node.js - 从 then 函数内访问 Promise 对象

javascript - JavaScript 中的脚本执行流程

javascript - 在评估 javascript 时设置 this 指针

javascript - Vue 内容在父组件之外渲染

javascript - 如何使用发布请求从浏览器上传图像 Instagram

java - Spring 3 : How to call @Async annotated methods from the TaskExecutor