簡體   English   中英

我使用異步瀑布,為什么回調不是函數?

[英]I use async waterfall, why callback is not a function?

我得到這個:

錯誤: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的默認功能。 我將異步功能放入異步功能中,這是不可能的嗎?

當您在瀑布內部的函數中使用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);
});

文檔

無論我們在何處接受Node風格的異步函數,我們都直接接受ES2017異步函數。 在這種情況下, 不會向async函數傳遞最終的回調參數 ,並且任何引發的錯誤都將用作隱式回調的err參數,而返回值將用作結果值。 (即拒絕返回的Promise成為err回調參數,而解析的值成為結果。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM