不幸的是,您不能将值返回给包装异步回调的函数。取而代之的是,您从AJAX请求进行的成功回调会将数据和控制权移交给另一个函数。我在下面演示了这个概念:
myFunction的定义:
// I added a second parameter called "callback", which takes a function // as a first class objectfunction myFunction(data, callback) { var result = false; $.ajax({ type: "POST", contentType: "application/json", dataType: "json", url: "url", data: data, error: function(data){ result = false; // invoke the callback function here if(callback != null) { callback(result); } // this would return to the error handler, which does nothing //return false; }, success: function(data){ result = true; // invoke your callback function here if(callback != null) { callback(result); } // this would actually return to the success handler, which does // nothing as it doesn't assign the value to anything // return true; } }); // return result; // result would be false here still}
回调函数定义:
// this is the definition for the function that takes the data from your // AJAX success handlerfunction processData(result) { // do stuff with the result here}
调用myFunction:
var data = { key: "value" }; // pass in both the data as well as the processData function object // in Javascript, functions can be passed into parameters as arguments!myFunction(data, processData);
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)