Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 返回数据后如何在AngularJs中链接多个方法_Javascript_Angularjs - Fatal编程技术网

Javascript 返回数据后如何在AngularJs中链接多个方法

Javascript 返回数据后如何在AngularJs中链接多个方法,javascript,angularjs,Javascript,Angularjs,我想知道返回数据后调用或链接我的方法的最佳方式。 在我看来(我可能完全错了,因此我提出了这个问题!)是获取数据的“繁重的工作”/“漫长的等待”已经完成,然后可以异步调用各种方法,相当于让这些方法同步地完成工作 我错了吗 下面是我用来处理返回数据的方法示例: function formatDataAccordingToLocation(data) { if (mediaSourceGraphChange) { mediaSourceGraphConfig();

我想知道返回数据后调用或链接我的方法的最佳方式。

在我看来(我可能完全错了,因此我提出了这个问题!)是获取数据的“繁重的工作”/“漫长的等待”已经完成,然后可以异步调用各种方法
,相当于让这些方法同步地完成工作

我错了吗

下面是我用来处理返回数据的方法示例:

function formatDataAccordingToLocation(data) {
    if (mediaSourceGraphChange) {
        mediaSourceGraphConfig();
        populateMediaSourceData(data.channels_data);
        mediaSourceGraphChange = false;
    }
    else if (sentimentGraphChange) {
        sentimentGraphConfig();
        populateSentimentData(data);
        sentimentGraphChange = false;
    }
    else if (hashtagsGraphChange) {
        hashtagsGraphConfig();
        populateHashtagsData(data);
        hashtagsGraphChange = false;
    }
    else {
        $scope.totalMentions = data.mentions_count;
        populateSummaryData(data);
        volumeGraphConfig();
        populateVolumeData(data.timeline_data, data.time_trend);
        populateHashtagsData(data);
    }
}

我建议在您的方法中使用angular$q服务,您可以使用它

var mediaSourceGraphConfig = function(){
     var deferred = $q.defer();
     //logic
     return deferred.resolve();
}
对于要异步调用的每个函数,然后在主函数中可以

function formatDataAccordingToLocation(data) {
    mediaSourceGraphConfig().then(populateMediaSourceData(variable));
}
如果函数返回错误的数据,也可以使用deferred.reject

更多有关$q的信息

希望有帮助

我的看法(我可能完全错了,因此我在问 问题是,取货的“繁重”/“漫长等待” 数据完成后,就可以调用各种方法了 异步地,相当于让方法完成工作 同步地

例如:

 if (mediaSourceGraphChange) {
        mediaSourceGraphConfig();
        populateMediaSourceData(data.channels_data);
        mediaSourceGraphChange = false;
    }
如果不是像@Tom Johnson所说的函数之间的依赖关系,我认为调用
mediaSourceGraphConfig()
populateMediaSourceData()的另一个很好的理由
如果这些方法可能需要经过一段时间才能返回,并且您不希望在这段时间内阻止浏览器/用户,则以异步方式返回。

您不需要为此回调吗?你好不,不需要回拨。每个函数都使用返回的数据修改我的视图和$scope。这是简单的功能,分配数据等。感谢您的响应和帮助。事情是这样的;我的数据已使用$q返回。我的问题是关于对返回数据的修改,以及是否有必要使用$q和方法链接等。或者我可以按照我的示例一个接一个地调用函数吗?我理解,这取决于函数是否相互依赖,因此如果函数2需要对函数1做出任何响应或更改,然后我建议将它们链接起来——特别是当它们发出http请求时,因为angular喜欢在打开挂起的http请求的同时从一个函数移动到另一个函数。否则,如果函数彼此独立,那么您的方法就可以正常工作。函数之间不依赖于彼此来返回任何值或数据。谢谢你的帮助!谢谢-这很有道理。:)