我正在尝试获取我使用 jquery 编写的实用方法的返回值:
function loadFrames(coords, spritesheet) {
return $.ajax({
type: "GET",
url: coords,
dataType: "xml",
success: function(xml,code,obj) {return parseFrameData(xml, spritesheet);}
});
}
因此,该方法接收两个参数,打开一个文件(“plist”参数指向的文件)并运行 parseFrameData 方法。 后者返回一个对象数组。
我想按以下方式使用它:
var frames = loadFrames('player.xml', 'spritesheet.png');
但我找不到方法说“返回以“'success:'”开头的在线调用方法的值...
最佳答案
编辑: An answer发布到问题@Tomalak 链接告诉我这个很酷的“ promise ”概念,您可能也想看看。
使用 $.ajax 的目的通常是发出异步请求。调用它并期望立即返回值将是一个同步请求。
话虽这么说,您可以通过设置 async:false
在同步模式下使用 $.ajax 来完成您所要求的操作。这可能会导致锁定您的浏览器,直到请求完成。
function loadFrames(coords, spritesheet) {
var myFrames;
$.ajax({
type: "GET",
url: coords,
dataType: "xml",
async: false,
success: function(xml,code,obj) {myFrames = parseFrameData(xml, spritesheet);}
});
return myFrames;
}
var frames = loadFrames('player.xml', 'spritesheet.png');
我相信这会起作用,但我没有很好的方法来测试它。其他人可以证实这种方法吗?
不过,按照 @Petah 建议的方式异步执行此操作会更好。
关于jquery - 返回 "success:"方法的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7753844/