javascript – async.waterfall从不执行第二个函数
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – async.waterfall从不执行第二个函数,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1414字,纯文字阅读大概需要3分钟。
内容图文
为什么这里的第二个函数永远不会被执行:
async.waterfall([
function(waterfallCb) {
console.log("step1");
countDocuments(db,waterfallCb);
}, function(waterfallCb) {
console.log("Step2");
insertDocument(db,waterfallCb);
}], function(err,data){
console.log("in waterfall callback");
db.close();
});
输出:
step1
in waterfall callback
为什么第二个函数(打印第2步)永远不会被调用?
编辑:这是countDocuments:
var countDocuments = function(db,callback){
var collection = db.collection(colname);
collection.find({}).toArray(function(err,docs){
assert.equal(err, null);
console.log("Found %d records",docs.length);
callback(docs);
});
};
编辑:InsertDocument:
var insertDocument = function(db, callback){
var collection = db.collection(colname);
collection.insertOne(sampleDoc, function(err,result){
assert.equal(err, null);
assert.equal(1, result.result.n);
assert.equal(1, result.ops.length);
console.log("inserted 1 document into the collection");
callback(null, 'one');
});
};
解决方法:
由于您使用的是caolan/async,因此第一个参数是错误对象,在您的情况下,如果除了null之外的其他任何内容可能会告诉异步您有错误并且不能继续.以下是文档中的示例:
async.waterfall([
function(callback) {
callback(null, 'one', 'two');
},
function(arg1, arg2, callback) {
// arg1 now equals 'one' and arg2 now equals 'two'
callback(null, 'three');
},
function(arg1, callback) {
// arg1 now equals 'three'
callback(null, 'done');
}
], function (err, result) {
// result now equals 'done'
});
内容总结
以上是互联网集市为您收集整理的javascript – async.waterfall从不执行第二个函数全部内容,希望文章能够帮你解决javascript – async.waterfall从不执行第二个函数所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。