将图书馆中的方法改为承诺

时间:2015-11-05 07:21:06

标签: javascript bluebird

<input class="form-control {{ $errors->has('email') ? 'has-error' : '' }}" name="email" placeholder="Email">

我有这段代码..我想知道是否可以使用它们的承诺。我不喜欢,我认为这两个if语句在测试错误时没有意义..

如果不可能......我无能为力吗?

1 个答案:

答案 0 :(得分:0)

如果库有回调接口,除了更改它的来源之外,你可能无能为力。

但你可以制作使用延迟接口的包装函数,如下所示:

// let's create our wrapper module
// json2cvs.js

var Deferred = require("deferred"); // this is just for example;
var converter = require("converter");

module.exports = function(MAP) {
    var dfd = Deferred();        

    converter.json2csv(MAP.fls, function (error, csv) {
        if (error) {
            dfd.reject(error);
        }

        file_system.writeFile(MAP.output.res, csv, function (error) {
            if (error) {
               dfd.reject(error);
            }

            // some actions
            var message = "file saved";

            // success
            dfd.resolve(message);
        });
    });

    return dfd.promise;   
}

然后在另一个模块中,您只需要上面的模块:

var json2csv = require("json2csv");

// use
json2csv(input).done(function(result) {
    console.log(result);
}).fail(function(error) {
    console.log(error);
});

对于此示例,我使用了此延迟库https://www.npmjs.com/package/deferred

但你可以使用任何其他。