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请求的同时从一个函数移动到另一个函数。否则,如果函数彼此独立,那么您的方法就可以正常工作。函数之间不依赖于彼此来返回任何值或数据。谢谢你的帮助!谢谢-这很有道理。:)