我是when.js javascript库的新手,但是我熟悉C#中的异步编程。这就是为什么我觉得这段代码很笨拙:

filters.doFilter('filter1name', reqAndPosts).then(function(filter1) {
    filters.doFilter('filter2name', filter1).then(function(filter2) {
        filters.doFilter('filter3name', filter2).then(function (posts) {
            renderView(posts);
        });
    });
    return filter1;
});


我基本上希望依次调用三个方法,并将每个方法的输出通过管道传递给下一个方法。无论如何,我是否可以将这段代码重构为更“类似于序列”的代码-即摆脱嵌套?我觉得这里的when框架缺少一些东西。我做的不好,对吧?

最佳答案

由于doFilter返回了承诺,我们可以做

filters.doFilter('filter1name', reqAndPosts)
    .then(function(filter1) {
        return filters.doFilter('filter2name', filter1);
    })
    .then(function(filter2) {
        return filters.doFilter('filter3name', filter2);
    })
    .then(renderView);

08-06 09:51