Javascript 如何使用YAHOO.util.Connect.asyncRequest并返回结果?

Javascript 如何使用YAHOO.util.Connect.asyncRequest并返回结果?,javascript,yui,yui-datatable,Javascript,Yui,Yui Datatable,我正在使用YAHOO.util.Connect.asyncRequest从数据库获取数据,下面是代码: function getCountArticle(contentCurValue) { var handleSuccess = function (res) { var countPubmed = YAHOO.lang.JSON.parse(res.responseText); var contentCountPubmed = countPubmed.totalA

我正在使用YAHOO.util.Connect.asyncRequest从数据库获取数据,下面是代码:

function getCountArticle(contentCurValue) {

  var handleSuccess = function (res) {
      var countPubmed = YAHOO.lang.JSON.parse(res.responseText);
      var contentCountPubmed = countPubmed.totalArticleRecords;
      alert(contentCountPubmed); //return 15 for example
  };

  var handleFailure = function () {
      alert("Error connecting data : Bad pubmed query");
  };

  var callback =
  {
    success:handleSuccess,
    failure:handleFailure,
    timeout: 5000
  };

  var sURL = 'qct-list-article.html?term=' + contentCurValue + '&retstart=0' + '&retmax=1';

  var request = YAHOO.util.Connect.asyncRequest('GET',sURL,callback);

}
我希望此函数返回:“contentCurValue”(例如:15),但当我尝试使用此代码时,会得到“undefined”:


我的错误可能是由于异步查询造成的,但是如何强制“var test=getCountArticle();”等待结果呢?

由于调用本质上是异步的,而不是尝试等待响应,因此最好指定一个回调函数来使用数据执行。您可以这样修改您的方法:

 function getCountArticle(contentCurValue, callback) {
  var handleSuccess = function (res) {
      var countPubmed = YAHOO.lang.JSON.parse(res.responseText);
      var contentCountPubmed = countPubmed.totalArticleRecords;
      callback(contentCountPubmed); //return 15 for example
  };
  // ...
} 
那么您的呼叫代码是:
 getCountArticle("contentCurValue", function(test) {
    alert(test);
});
getCountArticle(“contentCurveValue”,函数(测试){
警报(测试);
}); 

任何使用AJAX查询返回的值的进一步执行都将在回调方法内部进行

这篇文章本质上是同一个问题,但不是针对YUI的:

 getCountArticle("contentCurValue", function(test) {
    alert(test);
});