Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript PageMethods会降低进程和工作速度_Javascript_Pagemethods - Fatal编程技术网

Javascript PageMethods会降低进程和工作速度

Javascript PageMethods会降低进程和工作速度,javascript,pagemethods,Javascript,Pagemethods,我的页面上有很多页面方法。每个方法都用于从数据库获取数据。我已按以下方式订购。但我的问题是,成功方法之外的行,但在pagemethods完成过程之前,主函数内部的行都在工作 function check_valid() { // some code Pagemethod1 function suc1() { //some code PageMethod2 function suc2() {

我的页面上有很多页面方法。每个方法都用于从数据库获取数据。我已按以下方式订购。但我的问题是,成功方法之外的行,但在pagemethods完成过程之前,主函数内部的行都在工作

function check_valid()
{
     // some code
     Pagemethod1
     function suc1()
     {
       //some code
       PageMethod2
       function suc2()
       {
         //some code
         Page Method3
         function suc3()
         {
           //some code
         }
         function err3(){}
       }
       function err2(){}
     }
     function err1(){}
 return true;               //this line is working before the pagemethods complete the process
 }
我不熟悉“PageMethods”,但听起来这些函数中的每一个都是异步的,因为它从远程数据库接收数据。因为JavaScript在一个线程内运行,所以异步进程通常有一个附加回调函数的选项,该函数在进程完成后启动。这允许javascript在等待缓慢的数据库调用时执行其他操作,例如
返回true
,解释您的观察结果

相反,在数据库API中使用回调模式:

editDatabase(args*, function() {
    //Stuff to do database call is complete
});
或者,您的数据库API可能会使用事件模式:

var myDb = new DB();
myDb.edit(args*)
myDb.bind('complete', function() {
    //Stuff to do database call is complete
});
或者,您的数据库API可能使用承诺,您可以阅读这些承诺

如果您正在从同步语言迁移,这些模式可能需要一些时间才能习惯,但它们对于JavaScript来说是必不可少的。您还可以找到有关JavaScript异步方面的良好指南。

我不熟悉“PageMethods”,但听上去这些函数都是异步的,因为它们从远程数据库接收数据。因为JavaScript在一个线程内运行,所以异步进程通常有一个附加回调函数的选项,该函数在进程完成后启动。这允许javascript在等待缓慢的数据库调用时执行其他操作,例如
返回true
,解释您的观察结果

相反,在数据库API中使用回调模式:

editDatabase(args*, function() {
    //Stuff to do database call is complete
});
或者,您的数据库API可能会使用事件模式:

var myDb = new DB();
myDb.edit(args*)
myDb.bind('complete', function() {
    //Stuff to do database call is complete
});
或者,您的数据库API可能使用承诺,您可以阅读这些承诺

如果您正在从同步语言迁移,这些模式可能需要一些时间才能习惯,但它们对于JavaScript来说是必不可少的。您还可以找到有关JavaScript异步方面的良好指南。

我不熟悉“PageMethods”,但听上去这些函数都是异步的,因为它们从远程数据库接收数据。因为JavaScript在一个线程内运行,所以异步进程通常有一个附加回调函数的选项,该函数在进程完成后启动。这允许javascript在等待缓慢的数据库调用时执行其他操作,例如
返回true
,解释您的观察结果

相反,在数据库API中使用回调模式:

editDatabase(args*, function() {
    //Stuff to do database call is complete
});
或者,您的数据库API可能会使用事件模式:

var myDb = new DB();
myDb.edit(args*)
myDb.bind('complete', function() {
    //Stuff to do database call is complete
});
或者,您的数据库API可能使用承诺,您可以阅读这些承诺

如果您正在从同步语言迁移,这些模式可能需要一些时间才能习惯,但它们对于JavaScript来说是必不可少的。您还可以找到有关JavaScript异步方面的良好指南。

我不熟悉“PageMethods”,但听上去这些函数都是异步的,因为它们从远程数据库接收数据。因为JavaScript在一个线程内运行,所以异步进程通常有一个附加回调函数的选项,该函数在进程完成后启动。这允许javascript在等待缓慢的数据库调用时执行其他操作,例如
返回true
,解释您的观察结果

相反,在数据库API中使用回调模式:

editDatabase(args*, function() {
    //Stuff to do database call is complete
});
或者,您的数据库API可能会使用事件模式:

var myDb = new DB();
myDb.edit(args*)
myDb.bind('complete', function() {
    //Stuff to do database call is complete
});
或者,您的数据库API可能使用承诺,您可以阅读这些承诺


如果您正在从同步语言迁移,这些模式可能需要一些时间才能习惯,但它们对于JavaScript来说是必不可少的。您还可以找到有关JavaScript异步方面的良好指南。

使用JavaScript类可能会有所帮助。回调也是ajax的关键

function check_valid(){ 
 var fn = this; //assign this to a variable for ease of use
 var callbacks = []; //array to store all results
 var calls = []; //all ajax calls
 this.complete = function(callback){
  function check(){
   if(callbacks.length==calls.length){
    callback(callbacks);
   }else{
    setTimeout(function(){
     fn.check()
    },50);
   }
  }
  return fn;
 }
 this.callServ(params){
  calls.push(params);
  params.success = function(ret){
   callbacks.push({data:ret,status:'success'});
  }
  params.error = function(ret){
   callbacks.push({data:ret,status:'success'});
  }
  $.ajax(params);
  return fn;
 }
 return this;
}
这应该允许您系统地执行多个调用,然后使用单个回调来处理所有调用。我使用jQueryAjax使ajax调用更容易,并传递相同的参数

因此,使用如下方式:

var checkValid = new check_valid();

checkValid.callServ({url:url,data:data});
checkValid.callServ({url:url,data:data});
checkValid.callServ({url:url,data:data});

checkValid.complete(function(data){
 //data is an array of all call serv returns.
});

这可能与你目前掌握的情况相去甚远,大量的信息并不能告诉我到底在做什么。这个例子可能有点高级,但它会给人一种同步的假象,至少与javascript一样接近。

使用javascript类可能会有所帮助。回调也是ajax的关键

function check_valid(){ 
 var fn = this; //assign this to a variable for ease of use
 var callbacks = []; //array to store all results
 var calls = []; //all ajax calls
 this.complete = function(callback){
  function check(){
   if(callbacks.length==calls.length){
    callback(callbacks);
   }else{
    setTimeout(function(){
     fn.check()
    },50);
   }
  }
  return fn;
 }
 this.callServ(params){
  calls.push(params);
  params.success = function(ret){
   callbacks.push({data:ret,status:'success'});
  }
  params.error = function(ret){
   callbacks.push({data:ret,status:'success'});
  }
  $.ajax(params);
  return fn;
 }
 return this;
}
这应该允许您系统地执行多个调用,然后使用单个回调来处理所有调用。我使用jQueryAjax使ajax调用更容易,并传递相同的参数

因此,使用如下方式:

var checkValid = new check_valid();

checkValid.callServ({url:url,data:data});
checkValid.callServ({url:url,data:data});
checkValid.callServ({url:url,data:data});

checkValid.complete(function(data){
 //data is an array of all call serv returns.
});

这可能与你目前掌握的情况相去甚远,大量的信息并不能告诉我到底在做什么。这个例子可能有点高级,但它会给人一种同步的假象,至少与javascript一样接近。

使用javascript类可能会有所帮助。回调也是ajax的关键

function check_valid(){ 
 var fn = this; //assign this to a variable for ease of use
 var callbacks = []; //array to store all results
 var calls = []; //all ajax calls
 this.complete = function(callback){
  function check(){
   if(callbacks.length==calls.length){
    callback(callbacks);
   }else{
    setTimeout(function(){
     fn.check()
    },50);
   }
  }
  return fn;
 }
 this.callServ(params){
  calls.push(params);
  params.success = function(ret){
   callbacks.push({data:ret,status:'success'});
  }
  params.error = function(ret){
   callbacks.push({data:ret,status:'success'});
  }
  $.ajax(params);
  return fn;
 }
 return this;
}
这应该允许您系统地执行多个调用,然后使用单个回调来处理所有调用。我使用jQueryAjax使ajax调用更容易,并传递相同的参数

因此,使用如下方式:

var checkValid = new check_valid();

checkValid.callServ({url:url,data:data});
checkValid.callServ({url:url,data:data});
checkValid.callServ({url:url,data:data});

checkValid.complete(function(data){
 //data is an array of all call serv returns.
});

这可能与你目前掌握的情况相去甚远,大量的信息并不能告诉我到底在做什么。这个例子可能有点高级,但它会给人一种同步的假象,至少与javascript一样接近。

使用javascript类可能会有所帮助。回调也是ajax的关键

function check_valid(){ 
 var fn = this; //assign this to a variable for ease of use
 var callbacks = []; //array to store all results
 var calls = []; //all ajax calls
 this.complete = function(callback){
  function check(){
   if(callbacks.length==calls.length){
    callback(callbacks);
   }else{
    setTimeout(function(){
     fn.check()
    },50);
   }
  }
  return fn;
 }
 this.callServ(params){
  calls.push(params);
  params.success = function(ret){
   callbacks.push({data:ret,status:'success'});
  }
  params.error = function(ret){
   callbacks.push({data:ret,status:'success'});
  }
  $.ajax(params);
  return fn;
 }
 return this;
}
这应该允许您系统地执行多个调用,然后使用单个回调来处理所有调用。我使用jQueryAjax使ajax调用更容易,并传递相同的参数

因此,使用如下方式:

var checkValid = new check_valid();

checkValid.callServ({url:url,data:data});
checkValid.callServ({url:url,data:data});
checkValid.callServ({url:url,data:data});

checkValid.complete(function(data){
 //data is an array of all call serv returns.
});
这可能与你目前的情况相去甚远,t