变量范围与承诺良好实践相结合?

时间:2015-07-08 12:32:12

标签: javascript promise

我经常看到这样的代码:

代码完全由头开始

something.someFunction('foobar')
    .then(function(user) {
        var email = user.email();
        return user.getSomething();
    })
    .then(function(something) {
        var metadata = something.metadata();
        return user.getRelation(metadata);
    })
    .then(function(relation) {
        return email.send(relation, metadata);
    })
    .catch(function(err) {
        console.log(err);
    })
;

这是常见做法吗?就个人而言,我认为它不是很干净也不可读。什么是替代品?我能想到的就是把所有需要的东西放到一个对象中然后传递它。但是,长期承诺可能会变得非常大:

something.someFunction('foobar')
    .then(function(user) {
        return {
            email: user.email(),
            something: user.getSomething(),
        };
    })
    .then(function(state) {
        return {
            email: state.email,
            metadata: something.metadata(),
            relation: user.getRelation(metadata),
            // 'something' is not needed anymore ...
        };
    })
    .then(function(state) {
        return {
            result: email.send(state.relation, state.metadata),
            // and everything else that might be needed later on ...
        };
    })
    .catch(function(err) {
        console.log(err);
    })
;

这甚至还能按预期工作吗?如果没有,那么创建类似的东西会是什么?同样,我只是从头开始想出这个代码作为一个纯粹的示例。

0 个答案:

没有答案