Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/447.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
$http.get上的Javascript回调_Javascript_Angularjs - Fatal编程技术网

$http.get上的Javascript回调

$http.get上的Javascript回调,javascript,angularjs,Javascript,Angularjs,我正在从不同的json集从服务器检索多个http.get请求 在每个“物理”数据集的末尾,我执行一个需要“虚拟”调用中的值的计算,该值在一个名为“计算”的函数中设置(参见下面的代码) 通常情况下,这可以完全正常工作并返回正确的值,但是偶尔$http.get请求没有及时完成,因此值仍然设置为0 如何确保每个“群集”上的物理和虚拟调用的http.get请求都已完成 您没有正确跟踪呼叫。看起来可以并行调用并更新独立状态tcores[1..5]和tmemory[1..5]。要做到这一点,您可以独立地进行

我正在从不同的json集从服务器检索多个http.get请求

在每个“物理”数据集的末尾,我执行一个需要“虚拟”调用中的值的计算,该值在一个名为“计算”的函数中设置(参见下面的代码)

通常情况下,这可以完全正常工作并返回正确的值,但是偶尔$http.get请求没有及时完成,因此值仍然设置为0

如何确保每个“群集”上的物理和虚拟调用的http.get请求都已完成


您没有正确跟踪呼叫。看起来可以并行调用并更新独立状态
tcores[1..5]
tmemory[1..5]
。要做到这一点,您可以独立地进行调用,然后创建一个大型承诺,在所有调用都已使用解析时解析


您没有正确跟踪呼叫。看起来可以并行调用并更新独立状态
tcores[1..5]
tmemory[1..5]
。要做到这一点,您可以独立地进行调用,然后创建一个大型承诺,在所有调用都已使用解析时解析


如果它们可以同时运行,那么立即将它们全部关闭,然后使用
$q.all
,当所有承诺都得到解决时,它将得到解决:

var promiseObj = {};
promiseObj.virtual1 = $http.get('http:///search?idc=LH5&type=Virtual&cluster=1');
promiseObj.virtual2 = $http.get('http:///search?idc=LH5&type=Virtual&cluster=2');
promiseObj.physical1 = $http.get('http:///search?idc=LH5&type=Physical&cluster=1');

$q.all(promiseObj).then(function (results) {
    // results.virtual1 will be the results of virtual / cluster 1 promise
    // results.virtual2 will be the results of virtual / cluster 2
});

如果它们可以同时运行,那么立即将它们全部关闭,然后使用
$q.all
,当所有承诺都得到解决时,它将得到解决:

var promiseObj = {};
promiseObj.virtual1 = $http.get('http:///search?idc=LH5&type=Virtual&cluster=1');
promiseObj.virtual2 = $http.get('http:///search?idc=LH5&type=Virtual&cluster=2');
promiseObj.physical1 = $http.get('http:///search?idc=LH5&type=Physical&cluster=1');

$q.all(promiseObj).then(function (results) {
    // results.virtual1 will be the results of virtual / cluster 1 promise
    // results.virtual2 will be the results of virtual / cluster 2
});

当您的http请求可以并行运行时,您可以注入$q并使用
$q.all()
如下所示:

var https = [
    $http.get(/* .... */),
    $http.get(/* .... */),
    // as many as you wish
];

$q.all(https).then(function(results) {
    console.log('All finished, results:', results);
});

当您的http请求可以并行运行时,您可以注入$q并使用
$q.all()
如下所示:

var https = [
    $http.get(/* .... */),
    $http.get(/* .... */),
    // as many as you wish
];

$q.all(https).then(function(results) {
    console.log('All finished, results:', results);
});

我无法理解您的代码,但将
.success
混合在一起。那么
函数看起来不是一个好主意。这些调用需要像这样连续运行,或者可以并发运行吗?并发很好@sma您必须正确地链接您的承诺,例如,返回您的$http承诺。另外,对于相互不依赖的调用(对于某些调用来说似乎是这样),您可以同时发送它们并使用
$q.all()
。另外,您肯定应该使用一些函数来抽象它-您的大多数代码似乎都是完全相同的,只是使用不同的变量名和不同的URL。。。它需要一个函数。我不能遵循你的代码,而是将
.success
混合在一起。那么
函数看起来不是一个好主意。这些调用需要像这样连续运行,或者可以并发运行吗?并发很好@sma你必须正确地链接你的承诺,例如,通过返回你的$http承诺。另外,对于相互不依赖的调用(对于某些调用来说似乎是这样),您可以同时发送它们并使用
$q.all()
。另外,您肯定应该使用一些函数来抽象它-您的大多数代码似乎都是完全相同的,只是使用不同的变量名和不同的URL。。。它需要一个函数。你能不能再多给我一点硼化,或者给我指一个以前的问题/教程?你能不能再给我一点硼化,或者给我指一个以前的问题/教程?我最终决定使用这个解决方案,因为它看起来更干净!ThanksI最终决定采用此解决方案,因为它看起来更干净!谢谢