承诺多方

art*_*art 0 node.js promise bluebird multiparty

我承诺多方使用它的 form.parse。它工作正常,但 form.parse 不会返回我可以使用的 then/catch 值的承诺。

var Promise = require('bluebird');
var multiparty = Promise.promisifyAll(require('multiparty'), {multiArgs:true})
var form = new multiparty.Form();
form.parse({}).then((data)=>{console.log(data)});
Run Code Online (Sandbox Code Playgroud)

ser*_*off 7

这是我使用内置 Promise 的解决方案:

const promisifyUpload = (req) => new Promise((resolve, reject) => {
    const form = new multiparty.Form();

    form.parse(req, function(err, fields, files) {
        if (err) return reject(err);

        return resolve([fields, files]);
    });
});
Run Code Online (Sandbox Code Playgroud)

和用法:

const [fields, files] = await promisifyUpload(req)
Run Code Online (Sandbox Code Playgroud)