有没有一个很好的例子lodash的_.after方法

时间:2015-08-27 20:12:29

标签: javascript lodash

是否有一个很好的实际例子,说明如何在lodash库中使用_.after方法?

2 个答案:

答案 0 :(得分:7)

在需要在回调次数 n 之后调用回调时使用它。

var fn = _.after(3, function () {
  console.log('done');
});

fn(); // Nothing
fn(); // Nothing
fn(); // Prints "done"

所有异步调用完成时,调用回调非常有用。

  var done = _.after(3, function () {
      console.log('all 3 requests done!');
    });

  $.get('https://example.com', done);
  $.get('https://example.com', done);
  $.get('https://example.com', done);

玩家3次射击后死亡的基本游戏示例。

 var isDead = _.after(3, function () {
      console.log('Player died!');
    });

  player1.shoot(player2, isDead); // undefined
  player1.shoot(player2, isDead); // undefined
  player1.shoot(player2, isDead); // "Player died!"

基本上您使用_.after代替手动计数器。

答案 1 :(得分:-2)

那里没有很多例子,但是我看到以下内容用于我的内部工具。

基本上以下是使用Node运行的脚本。它从给定的Mongodb集合中删除文档。这就对了。但是,只有在清理完所有集合后才能关闭数据库连接。我们将使用_.after方法。您可以在功能here

之后阅读
 var Db = require('mongodb').Db,
 MongoClient = require('mongodb').MongoClient,
 Server = require('mongodb').Server;
 _ = require('lodash');

 var db = new Db('mydb', new Server('localhost', 27017));
 db.open(function(err, db) {

var collectionsToClean = ['COLLECTIONA', 'COLLECTIONB', 'COLLECTIONC'];

var closeDB = _.after(collectionsToClean.length, function() {
    db.close();
    console.log('Connection closed');
});

_.forEach(collectionsToClean, function(collectionName) {
    db.collection(collectionName, function(err, collection) {
        collection.remove({}, function(err) {
            if (err) {
                console.log('Could not remove documents from ' + collectionName);
            } else {
                console.log("All documents removed from " + collectionName);
            }
            closeDB();
        });
      })
   });
});

您现在可以将其用作其他Mongodb shell方法的模板。