自调用函数中的Javascript访问变量

时间:2017-06-29 00:42:59

标签: javascript callback asynccallback self-invoking-function

我试图通过一些嵌套的自调用函数为父函数级别的变量赋值。我是javascript编码的新手,在从嵌套函数中获取变量的值时遇到一些麻烦。值是异步加载的吗?或者还有另一种解决方法吗?

function searchA(keyword_string) {

                var video_id = '';
                var q = keyword_string;
                var request = gapi.client.youtube.search.list({
                        q: q, 
                        part: 'snippet',
                        maxResults: '1',
                        type: 'video',
                        order: 'relevance',
                        videoEmbeddable: 'true'
                });
                request.execute(function(response) {
                        var str = JSON.stringify(response.result);
                        var json = response.result;
                        video_id = json.items[0].id.videoId;
                        console.log(video_id); //THIS GIVES THE CORRECT ID
                });
                console.log(video_id); //THIS RETURNS AN EMPTY STRING 
        }

1 个答案:

答案 0 :(得分:0)

是的,该值正在异步加载

我不知道Google API的具体内容,但request.execute方法的第一个参数必须是回调函数,只有在响应到达时才执行

这样,最后console.log(video_id)video_id = json.items[0].id.videoId之前执行