Javascript 使用角度承诺的dropbox身份验证
我正在尝试使用Angular中的Promissions编写dropbox身份验证代码。我有一个名为dropboxAuthServ的服务,它返回一个包含创建的dropbox客户端实例的promise对象 在我的控制器中,我试图使用这个promise对象在视图上显示一些文本。我还计划稍后链接承诺,这样我就可以使用在我正在编写的另一个服务中创建的dropboxClient 问题是它不起作用。我不熟悉javascript中的角度和模块化编程。所以我的理解可能有缺陷。请随意分享您的意见。我附上下面的代码 控制器Javascript 使用角度承诺的dropbox身份验证,javascript,angularjs,Javascript,Angularjs,我正在尝试使用Angular中的Promissions编写dropbox身份验证代码。我有一个名为dropboxAuthServ的服务,它返回一个包含创建的dropbox客户端实例的promise对象 在我的控制器中,我试图使用这个promise对象在视图上显示一些文本。我还计划稍后链接承诺,这样我就可以使用在我正在编写的另一个服务中创建的dropboxClient 问题是它不起作用。我不熟悉javascript中的角度和模块化编程。所以我的理解可能有缺陷。请随意分享您的意见。我附上下面的代码
myApp.controller('MainCtrl', ['$scope', 'dropBoxAuthServ',
function ($scope, dropBoxAuthServ) {
dropBoxAuthServ
.getDbClient()
.then(function(result){
alert('Success' + result);
});
//$scope.result = dropBoxAuthServ.result;
}]);
服务
var myApp = angular.module('quickPlansApp',[]);
myApp.factory('dropBoxAuthServ', function($q){
var
dropboxClientCredentials,
//dropboxAuthDriver,
dropboxClient;
// Insert your Dropbox app key here:
var DROPBOX_APP_KEY = '';
dropboxClientCredentials = {
key: "xxxxxxxxxxxxxxx"
};
dropboxClient = new Dropbox.Client(dropboxClientCredentials);
return{
getDbClient: function(){
var defer = $q.defer;
dropboxClient.authenticate(function (error, client) {
if (error) {
throw error;
}
$timeout(function(){
defer.resolve({
'DBClient': client
})},1000);
});
return defer.promise;
}
};
});
为什么要使用超时?您没有注入$timeout,因此当您尝试使用它时,它应该会出错。除此之外,请将console.log记录到您的客户机上,然后查看返回的内容。警报不会向您显示任何可识别的内容。不确定这是否是打字错误,但您需要调用$q.defer函数,而不是引用它:var defer=$q.defer()@阿德里克曼。。。我使用$timeout作为实现异步调用的一种方法。我尝试注入$timeout,甚至尝试删除它。console.log(客户端)未返回任何内容。我的方法有什么根本问题吗?@tasseKATT。。。谢谢你指出这一点……但那是一个错误typo@meajmal基本面-不确定。但是,在远程API响应之前,回调不会运行,因此调用不会有帮助。您是否在任何地方检查结果['DBClient']?