从回调返回多个值



我有一个使用Monaca和AngularJS构建的跨平台应用程序。该应用程序使用允许用户拍照的相机插件。

有一个拍摄照片的函数,在该函数中,我想在成功捕获照片时返回一些值。

下面是我调用takePicture((函数的方法,以及尝试访问返回的值。下面的 2 个函数也是从不同的控制器/服务调用的。

控制器

// Take photo
$scope.takePicture = function () {
    var test = Photo.takePicture();
    alert("photoCaptured: " + test.photoCaptured + "nphotoName" + test.photoName); // Error here
};

下面是 takePicture(( 函数,它触发相机并在 onSuccess 回调时返回值

服务

// Get the main app.js module
var photo = angular.module("photo", []);
photo.service("Photo", function () {
    var myFunctions = {
        // Take picture
        takePicture: function () {
            var onSuccess = function (imageURI) {
                var photoCaptured, photoName;
                return { photoCaptured: true, photoName: imageURI } // Should return multiple values
            }
            var onFail = function (error) {
                alert("AN ERROR HAS OCCURED" + "nPhoto capture failed." + error);
            }
            var options = { quality: 50, destinationType: Camera.DestinationType.FILE_URI};
            navigator.camera.getPicture(onSuccess, onFail, options);
        },
    }
    return myFunctions;
});

但是,测试抛出错误无法读取未定义的属性"照片捕获"。

如何访问从 onSuccess 回调返回的值?

您正在将test分配给Photo.takePicture()的返回值,因此如果该函数不返回值,test将保持undefined,并且尝试访问test的任何属性将抛出错误Cannot read property x of undefined

正如安德烈亚斯所指出的 - 这个重复问题的答案解决了我的问题。就我而言,$q.defer 做到了。

最新更新