我明白了:
错误:TypeError:回调不是函数
代码:
var async = require('async');
async.waterfall([
(callback) => {
callback(null, 'test');
},
async (value1, callback) => {
const data = await send("http://google.com/search?q="+value1);
callback(null, data); //TypeError: cb is not a function
}
], (err) => {
if (err) throw new Error(err);
});
为什么会出错?即使“回调”是async.waterfall的默认功能。我将异步功能放入异步功能中,这是不可能的吗?
答案 0 :(得分:0)
在瀑布内部的函数中使用async
时,没有callback
参数。您无需解决callback(null, data)
就能解决data
。
async.waterfall([
(callback) => {
callback(null, 'test');
},
async value1 => {
const data = await send("http://google.com");
return data;
},
(value1, callback) => {
// value1 is the resolve data from the async function
}
], (err) => {
if (err) throw new Error(err);
});
来自docs:
无论我们接受Node样式的异步功能,我们都直接 接受ES2017异步功能。在这种情况下,异步功能将 不会传递最终的回调参数,并且将抛出任何错误 用作隐式回调的err参数,并返回 值将用作结果值。 (即拒绝 返回的Promise成为err回调参数,并且已解决 值成为结果。)