回调中的JavaScript静态函数

时间:2015-06-19 03:29:43

标签: javascript jquery function asynchronous callback

您好我一直在努力澄清这一点,但我仍然感到困惑。我知道您无法从异步函数返回值,所以我引用了这个答案的最佳答案Returning value from asynchronous JavaScript method?

我尝试做的是使用flickrAPI获取最大尺寸的图像。 flickrAPI允许用户搜索图片,因此我使用它来获取photo_id,然后我使用此photo_id来获取API的getSize方法的另一个请求,以获取最大尺寸照片的URL。

代码看起来有点混乱,因为我有一个名为flickrRequest的方法,它发送XMLHttp请求并获取一个JSON字符串。我知道我可以通过编写如下函数来实现我想要的目标:

angular.module('surveyApp', ['ionic'])

但我想知道是否有可能做这样的事情

function flickRQforimage() {
    ...got ID
    function flickrRQforSize() {
        ...got maxsizeURL
        create image based on maxsizeURL here
    }
}

一般来说,我的问题是是否有可能有一个引用另一个静态定义函数的回调函数(我想?)。我的函数的细节是它需要回调,并且在那些回调中发生ID和URL处理:

function flickRQforimage() {
    ...got ID
    function flickrRQforSize() {
        ...got maxsizeURL

    }
    create image based on maxsizeURL here
}
or even create image based on maxsizeURL here

我想知道如果那个未命名的函数改为其他东西会发生什么,比如flickrRQ(options,processPhoto(data)),然后我在一个单独的方法中定义函数。这对我来说很有意义,因为我希望将URL处理的功能分开,以使我的代码更清晰,更易读。

我在下面尝试了以下内容并且它没有用。什么都没打印。我甚至在processPhoto方法中有一个console.log。事实上,flickrRQforSize方法中的任何内容似乎都没有评估

flickrRQ(options, cb) 

即使在flickrRQforSize定义中,回调函数也被视为参数。我怀疑必须有一些我不理解的函数/异步调用。

我希望这很清楚 - 如果没有,我可以发布我的实际代码。

这是我的代码:

flickrRQforSize(options, function(data) {
    processPhoto(data)
}

0 个答案:

没有答案