0

通用汽车给出了gm().write() expects a callback function错误。写函数来自fs所以我也承诺了它。它仍然不起作用。

var gm = bluebird.promisifyAll(require("gm"));
var fs = bluebird.promisifyAll(require("fs"));

gm(filePath).resize(null, 128).write(file)
    .then(function() {
        console.log("Done");
    })
    .catch(function(err) {
        console.log(err);
    });

如何使用承诺gm

4

1 回答 1

1

Bluebird 的正常承诺方案promisifyAll()创建.writeAsync()返回一个承诺。它根本没有改变.write()。这假设gm()返回的对象是 Bluebird 可以通过的东西gm.prototype

所以,你会这样做:

const gm = require("gm");
bluebird.promisifyAll(gm.prototype);

gm(filePath).resize(null, 128).writeAsync(file).then(function() {
    console.log("Done");
}).catch(function(err) {
    console.log(err);
});

fs注意:除非您要自己直接使用 fs promisified 方法,否则您不必对模块进行承诺。

于 2016-08-31T03:55:18.047 回答