繁体   English   中英

承诺创建自定义失败不是函数Angularjs错误吗?

[英]Promise create custom fail is not a function Angularjs error?

当我尝试使用Promise在angularjs中创建html5目录函数时。 但它显示错误,如未定义的承诺。

角度文件:

$scope.createDirectory = function(dirName,dirLocation){
        fileManager.createDirectory(dirName,dirLocation)
        .then(function(data){
            console.log(data, "dir created");
        }).fail(function(err){
            console.log(err,"dir err while creating");
        });
    };

JS档案:-

var fileManager = {
createDirectory: function(directoryName,dirLocation){
                    var makePromise = new Promise(function(resolve, reject){
                        dirLocation.getDirectory(directoryName, {create: true, exclusive: false}, function(data){
                            resolve(data);
                        }, function(error){
                            reject(error);
                        });
                    });
                    return makePromise;
                }
}

TypeError: fileManager.createDirectory(...).then(...).fail is not a function
at h.$scope.createDirectory (app.js:60)
at angular.min.js:196
at f (angular.min.js:224)
at h.$eval (angular.min.js:123)
at h.$apply (angular.min.js:123)
at HTMLButtonElement.<anonymous> (angular.min.js:224)
at HTMLButtonElement.c (angular.min.js:32)

如何正确创建promise并将其绑定到角度函数。 我使用catch而不是失败了。 如何为所有失败函数创建自定义错误回调,如下所示

promise有错别字,应该是new Promise 尽管我建议您使用$q代替Promise

使用$q代替Promise对象的好处是,您的代码将是有角度的上下文,并且您无需手动运行摘要循环。 仿佛您使用Promise则需要手动运行摘要循环(因为Promise是本机异步JS函数,被认为是超出角度的世界)。

createDirectory: function(directoryName, dirLocation) {
    var makePromise = $q(function(resolve, reject) {
        dirLocation.getDirectory(directoryName, {
            create: true,
            exclusive: false
        }, function(data) {
            resolve(data);
        }, function(error) {
            reject(error);
        });
    });
    return makePromise;
};

更新资料

.fail函数在$q对象上不可用,您需要将fileManager.createDirectory函数代码调用更改为以下代码。

$scope.createDirectory = function(dirName,dirLocation){
    fileManager.createDirectory(dirName,dirLocation)
    .then(function(data){ //success callback
        console.log(data, "dir created");
    }, function(err){ //error callback
        console.log(err,"dir err while creating");
    });
};

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM