第二个承诺决心不解雇

Second promise resolve not firing

本文关键字:决心 承诺 第二个      更新时间:2023-09-26

我正在使用cordova文件传输插件在我的应用程序中上传,我试图将插件包装在离子工厂中以使我的代码更加模块化。

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承诺,我想我可能做错了什么。任何帮助将不胜感激。

谢谢@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;
});