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
Javascript 如何在AngularJs中处理回调函数?_Javascript_Angularjs_Ionic Framework_Cordova Plugins - Fatal编程技术网

Javascript 如何在AngularJs中处理回调函数?

Javascript 如何在AngularJs中处理回调函数?,javascript,angularjs,ionic-framework,cordova-plugins,Javascript,Angularjs,Ionic Framework,Cordova Plugins,在控制器中,我从工厂返回对象。该方法是回调类型 但问题是,该对象没有返回 我的实施情况如下: .factory('fileReadFactory', ['$http', function ($http) { var objRead = { setReadObject: '', setPath: 'comMyTaxi', setFileName: '', status: fal

在控制器中,我从工厂返回对象。该方法是回调类型

但问题是,该对象没有返回

我的实施情况如下:

.factory('fileReadFactory', ['$http',
    function ($http) {

        var objRead = {
            setReadObject: '',
            setPath: 'comMyTaxi',
            setFileName: '',
            status: false,
            errorCode: ''
        };
        var factory = {};
        factory.fileRead = function RequestFileSystem(fileName) {

            alert('factory start');
            objRead.setFileName = fileName;


            try {
                window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, createDirectory, fail);
                objRead.status = true;
                return objRead;
            } catch (e) {
                return objRead;
            }
        }
        ///write steps starts
        function createDirectory(fs) {
            fs.root.getDirectory(objRead.setPath, {create: true, exclusive: false}, onSuccessCreateFile, fail);
        }

        function onSuccessCreateFile(dirEntry) {
            dirEntry.getFile(objRead.setFileName + '.txt.gz', null, gotFileEntryRead, fail);
        }

        function gotFileEntryRead(fileEntry) {
            //  alert('in 2 type step2');
            fileEntry.file(gotFileReading, fail);
        }

        function gotFileReading(file) {
            //  alert('in 2 type step3');
            readFile(file);
        }

        function readFile(file) {
            // alert('in 2 type step4');
            var reader = new FileReader();
            reader.onloadend = function (e) {
                //   alert("Text is: "+this.result);
                objRead.setReadObject = this.result;

            }
            reader.readAsText(file);
            //  alert('reading Ends');
        }

        //write file ends

        function fail(err) {
            alert('error ' + err.code);
            objRead.errorCode = err.code;
            throw e;
        }
        return factory;
    }]);
我在控制器内部的呼叫是这样的

var objReturn = fileReadFactory.fileRead('myProfile');
    alert(objReturn.status);
    alert(JSON.parse(objReturn.setReadObject));
    if(objReturn.status){
        var obj=  JSON.parse(objReturn.setReadObject);

       // alert(obj);
      //  alert('Inside Object World');
        $scope.myprofile = obj;
    }

我没有得到if块。那么,我如何管理回拨

尝试呼叫您的服务,然后在功能中执行警报。您还应该阅读有关承诺的内容:

var objReturn = fileReadFactory.fileRead('myProfile').then(function(){
    alert(objReturn.status);
    alert(JSON.parse(objReturn.setReadObject));
    if(objReturn.status){
        var obj=  JSON.parse(objReturn.setReadObject);

       // alert(obj);
      //  alert('Inside Object World');
        $scope.myprofile = obj;
    }
});