第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

用JavaScript等待一些異步任務完成的最簡單方法?

用JavaScript等待一些異步任務完成的最簡單方法?

我想刪除一些mongodb集合,但這是一個異步任務。該代碼將是:var mongoose = require('mongoose');mongoose.connect('mongo://localhost/xxx');var conn = mongoose.connection;['aaa','bbb','ccc'].forEach(function(name){    conn.collection(name).drop(function(err) {        console.log('dropped');    });});console.log('all dropped');控制臺顯示:all droppeddroppeddroppeddropped確保all dropped刪除所有收藏集后將被打印的最簡單方法是什么?任何第三方都可以用來簡化代碼。
查看完整描述

3 回答

?
米琪卡哇伊

TA貢獻1998條經驗 獲得超6個贊

我看到您正在使用,mongoose因此您正在談論服務器端JavaScript。在這種情況下,我建議您查看異步模塊并使用async.parallel(...)。您會發(fā)現(xiàn)此模塊非常有用-它是為解決您所遇到的問題而開發(fā)的。您的代碼可能如下所示


var async = require('async');


var calls = [];


['aaa','bbb','ccc'].forEach(function(name){

    calls.push(function(callback) {

        conn.collection(name).drop(function(err) {

            if (err)

                return callback(err);

            console.log('dropped');

            callback(null, name);

        });

    }

)});


async.parallel(calls, function(err, result) {

    /* this code will run after all calls finished the job or

       when any of the calls passes an error */

    if (err)

        return console.log(err);

    console.log(result);

});


查看完整回答
反對 回復 2019-10-15
?
夢里花落0921

TA貢獻1772條經驗 獲得超6個贊

使用承諾。


var mongoose = require('mongoose');


mongoose.connect('your MongoDB connection string');

var conn = mongoose.connection;


var promises = ['aaa', 'bbb', 'ccc'].map(function(name) {

  return new Promise(function(resolve, reject) {

    var collection = conn.collection(name);

    collection.drop(function(err) {

      if (err) { return reject(err); }

      console.log('dropped ' + name);

      resolve();

    });

  });

});


Promise.all(promises)

.then(function() { console.log('all dropped)'); })

.catch(console.error);

這將丟棄每個集合,在每個集合之后打印“已刪除”,然后在完成時打印“全部刪除”。如果發(fā)生錯誤,則顯示為stderr。


先前的答案(這早于Node對Promises的本地支持):

使用Q承諾或Bluebird承諾。


與Q:


var Q = require('q');

var mongoose = require('mongoose');


mongoose.connect('your MongoDB connection string');

var conn = mongoose.connection;


var promises = ['aaa','bbb','ccc'].map(function(name){

    var collection = conn.collection(name);

    return Q.ninvoke(collection, 'drop')

      .then(function() { console.log('dropped ' + name); });

});


Q.all(promises)

.then(function() { console.log('all dropped'); })

.fail(console.error);

與藍鳥:


var Promise = require('bluebird');

var mongoose = Promise.promisifyAll(require('mongoose'));


mongoose.connect('your MongoDB connection string');

var conn = mongoose.connection;


var promises = ['aaa', 'bbb', 'ccc'].map(function(name) {

  return conn.collection(name).dropAsync().then(function() {

    console.log('dropped ' + name);

  });

});


Promise.all(promises)

.then(function() { console.log('all dropped'); })

.error(console.error);


查看完整回答
反對 回復 2019-10-15
  • 3 回答
  • 0 關注
  • 1581 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號