在这种情况下,我将如何使用 javascript 创建一个 promise 函数
How would i create a promise function in this situation with javascript
我目前正在使用 angularjs 构建应用程序并使用 mediafire javascript SDK 来执行一些任务。
现在我遇到的情况是,当发生上传时,我需要创建一个文件夹,此功能 returns 'folderkey'。现在为了让我的控制器中的代码保持干净,我想在我的服务功能上使用 .then 来继续上传新文件的过程。
我已经做了一些研究,但我仍然对我将如何做感到困惑。也许以我的情况为例可以帮助我理解需要做什么。
目前运行此功能用于我的服务,它将创建一个文件夹。
mediafireService.createFolder('TestFolder');
我想要
mediafireService.createFolder('TestFolder');
.then(function(folderkey){
//Upload file into that folder
});
这是我的工厂函数。
function createFolder(folderName){
var options = { foldername: folderName };
login(function(){
app.api('folder/create', options, function(data) {
console.log(data.response.folderkey);
return data.response.folderkey;
});
});
}
function login(callback){
app.login({
email: 'email',
password: 'pass'
}, callback);
};
阅读周围我不完全确定 javacript 本身是否具有此功能,或者我们是否必须为此使用外部服务。此刻有点迷失了。
如有任何帮助,我们将不胜感激,
谢谢
基本上您还没有在服务的 createFolder
功能中创建任何承诺。您可以使用 $q
依赖项构建您的自定义承诺。
Return 从方法延迟承诺并根据服务器回复解决或拒绝该承诺。
服务
function createFolder(folderName) {
var deferred = $q.defer();
var options = {
foldername: folderName
};
login(function() {
app.api('folder/create', options, function(data) { //success
console.log(data.response.folderkey);
//this line will promise resolve
//also it will send the folderKey to the consumer method.
deferred.resolve(data.response.folderkey);
}, function(data) { //error
//this line will promise reject with error msg
deferred.reject('error ocurred');
});
});
return deferred.promise;
};
控制器
mediafireService.createFolder('TestFolder').then(function(folderkey){
//Upload file into that folder
}, function(error){
//error handling
});
我目前正在使用 angularjs 构建应用程序并使用 mediafire javascript SDK 来执行一些任务。
现在我遇到的情况是,当发生上传时,我需要创建一个文件夹,此功能 returns 'folderkey'。现在为了让我的控制器中的代码保持干净,我想在我的服务功能上使用 .then 来继续上传新文件的过程。
我已经做了一些研究,但我仍然对我将如何做感到困惑。也许以我的情况为例可以帮助我理解需要做什么。
目前运行此功能用于我的服务,它将创建一个文件夹。
mediafireService.createFolder('TestFolder');
我想要
mediafireService.createFolder('TestFolder');
.then(function(folderkey){
//Upload file into that folder
});
这是我的工厂函数。
function createFolder(folderName){
var options = { foldername: folderName };
login(function(){
app.api('folder/create', options, function(data) {
console.log(data.response.folderkey);
return data.response.folderkey;
});
});
}
function login(callback){
app.login({
email: 'email',
password: 'pass'
}, callback);
};
阅读周围我不完全确定 javacript 本身是否具有此功能,或者我们是否必须为此使用外部服务。此刻有点迷失了。
如有任何帮助,我们将不胜感激, 谢谢
基本上您还没有在服务的 createFolder
功能中创建任何承诺。您可以使用 $q
依赖项构建您的自定义承诺。
Return 从方法延迟承诺并根据服务器回复解决或拒绝该承诺。
服务
function createFolder(folderName) {
var deferred = $q.defer();
var options = {
foldername: folderName
};
login(function() {
app.api('folder/create', options, function(data) { //success
console.log(data.response.folderkey);
//this line will promise resolve
//also it will send the folderKey to the consumer method.
deferred.resolve(data.response.folderkey);
}, function(data) { //error
//this line will promise reject with error msg
deferred.reject('error ocurred');
});
});
return deferred.promise;
};
控制器
mediafireService.createFolder('TestFolder').then(function(folderkey){
//Upload file into that folder
}, function(error){
//error handling
});