在服务中调用Promise后无法在我的控制器中获取值

时间:2019-01-29 15:07:27

标签: angularjs promise

我有一个控制器,该控制器调用服务中的函数。依次调用同一服务内的promise函数。

问题是我无法在控制器中获得返回的值。

控制器:

    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来使工作正常吗?

非常感谢。

1 个答案:

答案 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/

希望对您有帮助!