第二个承诺解决不解雇

时间:2016-01-18 15:56:47

标签: javascript angularjs cordova

我在我的应用程序中使用cordova-file-transfer插件进行上传,我试图在离子工厂中插入插件,以使我的代码更加模块化。

angular.module('starter.services')
.factory('$uploader', function($q, $cordovaFileTransfer, $user) {

    this.uploadLogo = function(filepath, vendorId) {
        var q = $q.defer();
        var server = encodeURI(logoUploadUrl(vendorId));

        $cordovaFileTransfer.upload(server, filepath, this.logoUploadOptions, true)
        .then(function (result) {
            q.resolve(result);
        }, function (error) {
            q.reject(error);
        }, function (progress) {
            q.resolve(progress);
        });

        return q.promise;
    };

    return this;
});

当我在控制器中使用工厂时,第一个“q.resolve”调用不会被触发,而第二个调用是。我刚学会了如何使用JS承诺,我想我可能做错了什么。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

感谢@maurycy的帮助。我把它整理出来了

angular.module('starter.services')
.factory('$uploader', function($q, $cordovaFileTransfer, $user) {

    this.uploadLogo = function(filepath, vendorId) {
        var q = $q.defer();
        var server = encodeURI(logoUploadUrl(vendorId));

        $cordovaFileTransfer.upload(server, filepath, this.logoUploadOptions, true)
        .then(function (result) {
            q.resolve(result);
        }, function (error) {
            q.reject(error);
        }, function (progress) {
            q.notify(progress);
        });

        return q.promise;
    };

    return this;
});