Javascript 在解决服务承诺方法之前,先转到主方法&x27;承诺
我已经写了如下所示的角度服务 getPropertyDetailsBySingapiService.js 这就是消费方法: propertyForm.js Q:这里的问题是在解决服务方法的承诺之前,它转到主方法的承诺。换句话说,在解决服务方法的第二个承诺之前,它转到调用方法的承诺。你能告诉我问题在哪里吗 您可以重写:Javascript 在解决服务承诺方法之前,先转到主方法&x27;承诺,javascript,angularjs,Javascript,Angularjs,我已经写了如下所示的角度服务 getPropertyDetailsBySingapiService.js 这就是消费方法: propertyForm.js Q:这里的问题是在解决服务方法的承诺之前,它转到主方法的承诺。换句话说,在解决服务方法的第二个承诺之前,它转到调用方法的承诺。你能告诉我问题在哪里吗 您可以重写: return $http.get('url').then(function(r) => { return r;}) 作为: 这在通常情况下没有意义,但在特殊情况下,您可以使
return $http.get('url').then(function(r) => { return r;})
作为:
这在通常情况下没有意义,但在特殊情况下,您可以使用此构造执行任何操作:
var defer = $q.defer();
if (smth) {
defer.resolve('test1');
} else {
$http.get('url').then(function(r) => {
if (smth2) {
defer.resolve(r);
} else {
$http.get(..., function(r) => {
defer.resolve(r);
})
}
})
|
return defer.promise;
您可以重写:
return $http.get('url').then(function(r) => { return r;})
作为:
这在通常情况下没有意义,但在特殊情况下,您可以使用此构造执行任何操作:
var defer = $q.defer();
if (smth) {
defer.resolve('test1');
} else {
$http.get('url').then(function(r) => {
if (smth2) {
defer.resolve(r);
} else {
$http.get(..., function(r) => {
defer.resolve(r);
})
}
})
|
return defer.promise;
因此,在服务的第一个承诺中,您没有返回第二个承诺,因此第一个承诺只是在方法完成时完成并解析,而不是等待第二个承诺
return $http.get(url).then(function (data) {
var result = data;
if (result.data[0].Status == 'OK') {
//Add a return here
return $http.get(endpointUrl + token + '&Krp=' + result.data[0].Result[0].KRP + '&County=' + county)
.then(function (finalData) {
return finalData;
});
}
});
因此,在服务的第一个承诺中,您没有返回第二个承诺,因此第一个承诺只是在方法完成时完成并解析,而不是等待第二个承诺
return $http.get(url).then(function (data) {
var result = data;
if (result.data[0].Status == 'OK') {
//Add a return here
return $http.get(endpointUrl + token + '&Krp=' + result.data[0].Result[0].KRP + '&County=' + county)
.then(function (finalData) {
return finalData;
});
}
});
我会尝试你的解决方案,并让你知道。但是你能告诉我为什么我的实现不起作用吗?谢谢。干杯……我的朋友,这很有效。非常感谢。希望你回来后能对上述问题给出反馈。祝你愉快:)我会尝试你的解决方案,并让你知道。但你能告诉我为什么我的实现不起作用吗?谢谢。干杯……这很有效,我的朋友。非常感谢。希望你回来后能对上述问题给出反馈。祝你度过愉快的一天:)是的,你的解决方案也有效。但是有点晚了。无论如何,谢谢。现在我有两个选择。干杯:)是的,你的解决方案也很有效。但有点晚了。无论如何,多谢。现在我有两个选择。干杯:)