javascript - 如何将控制权交还给主函数 - jQuery、JS

标签 javascript jquery

我正在为 API 调用网站编写代码作为练习。我编写了一个函数来获取数据,另一个函数将文章片段呈现到页面上。我的目的是能够清除页面以显示完整的文章内容。

我使用 jQuery 函数来实现这一点。我的问题是,在调用渲染文章片段的函数后,我无法调用 $(document).ready() 部分中的任何其他函数(因为控件似乎仍然位于内部) renderSnippet 函数)。

我希望能够从 $(document).ready() 调用 News.clearView 但它没有发生。但是,如果我从 renderSnippet 函数内部调用它,它就会起作用。

所以我的问题是:调用 renderSnippet 后如何返回到 $(document).ready() 部分?我尝试尝试使用 return 语句,但这没有帮助。

apiquery.js

var News = {
    get: function(query, callback) {          
            $.ajax({
            url: "http://content.guardianapis.com/search",
            type: "GET",
            data: query,
            dataType: "json",
            success: function(json) {
                callback(json.response.results);     
            },
            error: function(xhr, status, errorThrown) {
                alert("Sorry, there was a problem!");
                console.log("Error: " + errorThrown);
                console.log("Status: " + status);
                console.dir(xhr);
            },

        });  
    },
    renderSnippet: function(quantity, query) {
        News.get(query, function(data) {
        $.get("views/home.html", function(contents) {
            // renders snippets to home page
            for(var i = 0; i < quantity; i++) {
                var helper = contents;
                helper = helper.replace("${Title}", data[i].webTitle);
                helper = helper.replace("${Snippet}", data[i].fields.standfirst);
                $('div.news').append(helper);
            }
            //News.clearView(); // This one works
        }, 'html');

        });
    },
    clearView: function() {
        $('div.news').empty();
    }
}


$(document).ready(function() {
    News.renderSnippet(10, "q=technology&show-fields=all&api-key=test");
    News.clearView(); // This is not working
});

谢谢!

最佳答案

您也可以在那里使用回调方法,就像在 get 函数中使用的那样。

 renderSnippet: function(quantity, query,callback) {
    News.get(query, function(data) {
    $.get("views/home.html", function(contents) {
        // renders snippets to home page
        for(var i = 0; i < quantity; i++) {
            var helper = contents;
            helper = helper.replace("${Title}", data[i].webTitle);
            helper = helper.replace("${Snippet}", data[i].fields.standfirst);
            $('div.news').append(helper);
        }
        //News.clearView(); // This one works
         calllback();
    }, 'html');

    });
},

在准备好的文档中,您可以进行这样的调用

News.renderSnippet(10, "q=technology&show-fields=all&api-key=test",function(){
    News.clearView();
});

关于javascript - 如何将控制权交还给主函数 - jQuery、JS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32935136/

相关文章:

javascript - 你如何编写清除命令

javascript - 动态为系列下的数据添加值 - echarts

javascript - mapStateToProps 应该异步更新 props 吗?

jquery - Div 在另一个下滑动

javascript - 如何触发超链接点击事件-React组件

javascript - 传递变量以追加

php - 如何在单击表单元素时发出 PHP 调用?

javascript - 关闭表单提交时的 Jquery 对话框

javascript - 表被附加而不是创建一个新表

javascript - Bootstrap,如何在使用视口(viewport)高度时向下滚动后使导航栏变粘?