Angular2:回归诺言

这个问题在这里已经有了答案:

  • 如何将现有的回调API转换为承诺? 17个答案

  • AWS SDK for JavaScript从3月31日发布2.3.0版本开始支持许诺。 这是通告。

    如果您使用2.3.0之前的版本,我建议您更新到最新的SDK版本,然后使用promises而不是回调。


    如果你使用TypeScript,你可以做这样的事情来返回一个promise 。 我可以想象它的JavaScript风格大致相同:

    getBuckets() {
         return new Promise(function (resolve, reject) {
            var s3 = this.getS3();
            var params = {};
            s3.listBuckets(params, function(err, response) {
                if (err) {
                    reject(err);
                }
                else {
                    resolve(response);
                }
            })
         })
    }
    

    你可以在这里使用$ q,documentatie:https://docs.angularjs.org/api/ng/service/$q

    这看起来像这样:

    getBuckets() {
        var deferred = $q.defer();
        var s3 = this.getS3();
        var params = {};
        s3.listBuckets(params, function(err, response) {
            if (err) {
                deferred.reject(err);
            }
            else {
                deferred.resolve(response);
            }
        })
        return deferred.promise;
    }
    
    链接地址: http://www.djcxy.com/p/55519.html

    上一篇: Angular2: Returning Promise

    下一篇: AngularJS promise not resolving file with FileReader