Javascript 命名的异步函数导致;task.apply不是一个函数;
我正在尝试使用async/await函数编写一个异步瀑布 这项工作:Javascript 命名的异步函数导致;task.apply不是一个函数;,javascript,node.js,async-await,Javascript,Node.js,Async Await,我正在尝试使用async/await函数编写一个异步瀑布 这项工作: async.瀑布([ 异步函数(){ 让测试=等待foo(); 回归试验; } ], 功能(错误、结果){ 控制台日志(err); 控制台日志(结果); }); 但是,当我在下面定义函数,然后在数组中按其名称调用它时,如下所示: async function myFunction() { let test = await foo(); return test; } async.waterfall([ myFun
async.瀑布([
异步函数(){
让测试=等待foo();
回归试验;
}
],
功能(错误、结果){
控制台日志(err);
控制台日志(结果);
});
但是,当我在下面定义函数,然后在数组中按其名称调用它时,如下所示:
async function myFunction() {
let test = await foo();
return test;
}
async.waterfall([
myFunction()
],
function(err, results) {
console.log(err);
console.log(results);
});
我收到以下错误:
未处理的PromisejectionWarning:TypeError:task.apply不是函数
我正在尝试让我命名的异步函数在瀑布中工作。我认为
myFunction
应该作为引用传递,而不是直接调用,例如:
异步函数myFunction(){
让测试=等待foo();
回归试验;
}
异步瀑布([
我的功能
],
功能(错误、结果){
控制台日志(err);
控制台日志(结果);
});
这有帮助吗?我认为
myFunction
应该作为引用传递,而不是直接调用,例如:
异步函数myFunction(){
让测试=等待foo();
回归试验;
}
异步瀑布([
我的功能
],
功能(错误、结果){
控制台日志(err);
控制台日志(结果);
});
这有帮助吗?在第一个示例中,您正在传递异步库稍后可以调用的函数引用。在第二个示例中,您立即调用该函数并传递它返回的承诺。它们的执行方式完全不同。删除
myFunction
之后的parens,然后在第二个示例中也将传递函数引用。另外,异步库承诺是否知道?它会等待myFunction()
返回的承诺吗?当您已经有承诺可用时,您不应该将async.js库与async function
s和wait
语法一起使用。你不需要那个图书馆。不要把承诺和回调风格混为一谈。@Bergi,注意到。我将研究如何重新构造代码。在第一个示例中,您将传递一个异步库稍后可以调用的函数引用。在第二个示例中,您立即调用该函数并传递它返回的承诺。它们的执行方式完全不同。删除myFunction
之后的parens,然后在第二个示例中也将传递函数引用。另外,异步库承诺是否知道?它会等待myFunction()
返回的承诺吗?当您已经有承诺可用时,您不应该将async.js库与async function
s和wait
语法一起使用。你不需要那个图书馆。不要把承诺和回调风格混为一谈。@Bergi,注意到。我将研究如何重组我的代码。