问题是我无法在控制器中获得返回的值。
控制器:
function mainFunctionInControlelr() {
some code here...
vm.evtHTTPFactory.getData() // calling the service
.then(function(response) {
console.log("the returned value is " + response.myReturned );
});
}
服务:
factory.getData = function(parm) {
return factory.getABC(parm); // calling another method in the same service
};
factory.getABC = function(parm) {
return $q(function(resolve, reject) {
$http.get(PltConfig.APIPath + '/v1/............', {
params: { inputParm: parm }
})
.success(function (response) {
resolve(response.data.myReturned);
return;
} )
});
};
问题在于服务内部的getData正在服务内部也调用getABC。在此过程中丢失了一些东西。我需要控制器中有“ myReturned”。
我需要在服务中放入getData来使工作正常吗?
非常感谢。
答案 0 :(得分:0)
我将使用async等待...如下:
在您的函数getData中:
public partial class App : Application
{
public App()
{
DispatcherUnhandledException += App_DispatcherUnhandledException;
}
private void App_DispatcherUnhandledException(object sender, System.Windows.Threading.DispatcherUnhandledExceptionEventArgs e)
{
e.Handled = true;
MessageBox.Show(e.Exception.Message);
Environment.Exit(0);
}
protected override void OnStartup(StartupEventArgs e)
{
base.OnStartup(e);
if (!SomeCondition)
Application.Current.Shutdown();
}
}
在功能控制器中:
factory.getData = async function(parm) {
var data = await factory.getABC(parm);
return data;
};
此处的示例:https://jsfiddle.net/hernangiraldo89/frv4L2jh/4/
希望对您有帮助!