真的希望有人可以指向我正确的方向,或者告诉我我做错了什么。对不起,如果我的解释不好,请客气!
当前,我正在使用动态创建的URL创建一个运行ajax调用的函数。该功能需要位于一个集中的位置(例如website.com/global-api.js)。理想情况下,我们的任何开发人员都应该能够使用自己想要检索的数据集从其站点(website.com/mysite.html)中调用该函数,然后根据需要进行更改(我'其中包含一个模糊的图表,用来描述需求-可能没有用)。
global-api.js
function globalApi(value){
var setApiProp = {
settings: { name: value },
init: function(){ 'use strict';
s=this.settings;
this.getApiData(s.name);
},
getApiData: function(attr){
path = '/api/'+attr;
console.log('Get from: ' + path)
var jqxhr = $.ajax({
url: path,
method: "GET",
dataType: "json",
async: false
})
.done(function(responseData){
console.log('Response is: ' + responseData)
// Log: Response is: [object Object],[object Object]..
return responseData
})
}
}; //end
setApiProp.init()
}
unitone.js
在dom内容加载事件中:
var retrievedData = globalApi("news/")
console.log('Retrieved is: ' + retrievedData)
developersFunction(retrievedData);
来自unitone.js的调用会生成正确的路径,并在globalApi中获取正确的数据。 但是,我的日志是当前的;
Response is: [object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Retrieved is: undefined
Developer function data is: undefined
我的问题是;有没有一种可靠的方法可以使DevelopersFunction等待设置检索到的数据,以便可以在本地函数中使用它?
Diagram of requirement: Unit files to call function from central location
答案 0 :(得分:0)
您需要做的是将回调函数传递给gloablAPI函数,如下所示:
function globalApi(value, callBack)
调用此函数的人将传递一个函数,在您的情况下,您可以传递developers(开发人员)函数:
globalApi("news/", developersFunction)
现在,在获取响应时,您的globalAPI函数旁边需要调用此函数:
.done(function(responseData){
console.log('Response is: ' + responseData)
// Log: Response is: [object Object],[object Object]..
callBack(response);
})
这样,只有在API做出响应后,您的函数才会执行。