繁体   English   中英

使用从另一个文件中存在的ajax请求中检索的数据,然后在本地函数中使用

[英]Use retrieved data from an ajax request that exists in another file, then use in a local function

真的希望有人可以指出正确的方向或告诉我我做错了什么。 不好意思,如果我的解释不好,请客气!

目前,我正在使用动态创建的URL创建一个运行ajax调用的函数。 该功能需要放在一个集中的位置(例如website.com/global-api.js)。 理想情况下,我们的任何开发人员都应该能够使用自己想要检索的数据集从其站点(website.com/mysite.html)中调用该函数,然后根据需要进行更改(我包含一个模糊的图表,用来描述需求-可能没有用)。

全球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等待设置检索到的数据,以便可以在本地函数中使用它?

需求图:从中央位置调用功能的单位文件

您需要做的是将回调函数传递给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做出响应后,您的函数才会执行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM