创建一个异步的管道功能,以便等待功能

时间:2017-10-31 18:26:24

标签: javascript

我创建了一个简单的管道函数,它接受一个对象作为参数。该对象返回到下一个函数。

需要在for of循环内等待函数本身。我试图找到如何做到这一点的例子,并且已经阅读了多篇文章而没有成功。当我在管道async前面添加function时,我收到以下错误:

TypeError: pipeline(...) is not a function

以下是我的代码:

async function pipeline(...funcs) {... // Throws the error

function pipeline(...funcs) {
  return function(val) {
    let lastResult
    for (let func of funcs) {
      console.log(func)
      lastResult = func(lastResult || val)
    }
    return lastResult
  }
}

const pipe = pipeline(
  function1,
  function2,
  function3
)(object)

1 个答案:

答案 0 :(得分:3)

创建管道不能是异步,而是执行它:

function pipeline(...funcs) {
  return async function(val) {
    for (let func of funcs) {
      console.log(func);
      val = await func(val);
    }
    return val;
  } 
}