Sat*_*Raj 1 javascript promise angularjs angular-promise
当我尝试使用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");
});
};
Run Code Online (Sandbox Code Playgroud)
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)
Run Code Online (Sandbox Code Playgroud)
如何正确创建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;
};
Run Code Online (Sandbox Code Playgroud)
更新资料
.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");
});
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1736 次 |
| 最近记录: |