【问题标题】:async.js filter function nodejsasync.js 过滤函数 nodejs
【发布时间】:2020-06-23 05:14:51
【问题描述】:

我设法使以下过滤器起作用

var async = require('async');
var fs = require('fs');
async.filter([3, 4, 5, 6, 7], fa, function(err, results) {
  console.log(results);
  //console.log("ultimcc",cc);
});

function fa(as, callback) {
  var cc = {};
  for (i = 1; i < as; i = i + 1) {
    cc[i] = i;
  }
  console.log("inside", as, cc);
  if (as > 4) {
    callback(null, as)
  }
  if (as <= 4) {
    callback(null, null)
  }
}

在此示例中,我尝试过滤大于 4 的任何内容 忽略 cc 变量。 问题是......它与异步模块上的文档不匹配 https://github.com/caolan/async/blob/v1.5.2/README.md 我在更高的变体上尝试了一些变体,......同样的废话

有人可以帮助我仅使用异步模块以正确的方式编写吗?

【问题讨论】:

  • 当我使用RunKit 运行代码时,代码会按照我的预期运行。它返回[5, 6, 7] 并记录"inside", 3, {1: 1, 2: 2}(等等)......我不明白你的问题。
  • 我也是,代码工作正常。你到底想要什么结果?
  • 想学习位过滤器,但 1.5.3 版的文档一团糟

标签: javascript node.js async.js


【解决方案1】:

最好使用数组对象的.filter(),但如果您更喜欢使用异步,这是一个代码示例:

const async = require('async');
const fs = require('fs');

async.filter([3, 4, 5, 6, 7],
  (as, callback) => {
    if (as > 4) callback(null, as);
    else callback();
  }, (err, results) => {
    if (err) console.error(err);
    else console.log(results);
  });

替代的 whitout 异步模块是这样的:

let result = [3, 4, 5, 6, 7].filter(as => as > 4);
// equal to write -> let result = [3, 4, 5, 6, 7].filter(function (as) { return as > 4; });
console.warn(result);

【讨论】:

  • ty 做得很好,我不得不问,因为我需要其余的函数和内部文档..... arr - 一个要迭代的数组。 iterator(item, callback) - 适用于 arr 中每个项目的真值测试。迭代器被传递一个回调(truthValue),一旦它完成,它必须用一个布尔参数调用。 callback(results) - 可选所有迭代器函数完成后调用的回调。
  • 还有哪些功能?
【解决方案2】:

我不知道,但您可以简单地过滤数组而不使用异步模块。但是正如您所说,您必须在那时才使用异步模块

var async = require('async');
var fs = require('fs');
let cc = {};
async.filter([3, 4, 5, 6, 7], (res) => {
    if (res <= 4) {
        cc[res] = res;
    }

});
console.log(cc);

【讨论】:

  • ty 避免最终回调的方式也很有趣
猜你喜欢
  • 1970-01-01
  • 2017-03-25
  • 1970-01-01
  • 1970-01-01
  • 2013-01-19
  • 1970-01-01
  • 2012-02-07
  • 2014-03-11
  • 2017-03-04
相关资源
最近更新 更多