然后不能通过函数返回一个承诺 - jimp

时间:2016-06-27 20:41:51

标签: javascript node.js promise

我正在使用Jimp库进行一些图像处理。单步执行read方法,我看到最后一行命中是返回一个promise。一旦它返回,.then就会抛出一个错误,好像承诺永远不会从read返回。

错误:无法读取属性'然后'未定义

来自jimp的源代码(明确返回承诺):

Jimp.read = function(src, cb) {
    var promise = new Promise(
        function(resolve, reject) {
            cb = cb || function(err, image) {
                if (err) reject(err);
                else resolve(image);
            }
            if ("string" != typeof src && ("object" != typeof src || !Buffer.isBuffer(src)))
                return throwError.call(this, "src must be a string or a Buffer", cb);
            var img = new Jimp(src, cb);
        }
    );
    return promise;
}

我的代码:

var jimp = require('jimp');
var nano = require('nano');
var _ = require('underscore');
var Common = require('../models/Common');
var util = require('../utils/helper');
var fs = require('fs');

module.exports.changeLogo = function changeLogo(user, file) {
    var theFile = file.destination + file.filename; //file.path?

    jimp.read(theFile).then(function(logo) {
        fs.unlink(theFile);
        logo.resize(jimp.AUTO, 150)

        logo.getBuffer(file.mimetype, function(err, buffer) {

            return Common.addAttachment(user, 'logo' + util.getFileExtension(file.filename), buffer, file.mimetype);
        })
    })
    .catch(function(err) {
        console.log(err);
    })

};

我在运行jimp.read(theFile)之前中断,并在控制台中运行:

var test = jimp.read(theFile);
test;

这给了我#<Promise>

这里的

typeof测试是一个对象。

0 个答案:

没有答案