我有类似以下的内容
var async = require(async)
function start () {
async.series(
[
function (callback) {
// do something
callback(null, "Done doing something")
return // EXIT start() NOT JUST THIS VIRTUAL FUNCTION
},
function (callback) {
// do something else if the first thing succeeded
callback(null, "Done doing something else")
}
],
function (err,result) {
if (err) {
console.log(err)
}
}
)
console.log("All done!")
}
// Start doing stuff
start()
是否可以根据包含的虚拟函数中的某些条件退出函数start(),其中我放置了注释" EXIT start()不仅仅是这个虚拟函数"
答案 0 :(得分:0)
在async
文档(此处:https://github.com/caolan/async#seriestasks-callback)
async.series 在系列中运行任务集合中的函数,每个函数都在运行 一旦上一个功能完成。
If any functions in the series pass an error to its callback, no more functions are run
,和 立即使用错误值调用回调。除此以外, 任务完成后,回调会收到一系列结果。
所以,而不是打电话:
return // EXIT start() NOT JUST THIS VIRTUAL FUNCTION
您可以致电:
callback("stop", null)
答案 1 :(得分:0)
简而言之,您可以提前退出任务系列。 async
使用error-first callbacks,这是Node.js中的基本异步回调结构。使用Node.js了解异步开发的另一个资源是从RisingStack看到这个伟大的blog post。
来自async
的回调返回到async.series
完成时调用的最终回调(如果提供),此回调是可选的。如果系列中的任务在第一个参数(错误参数)中返回值不是null
的回调,则series
将中断并返回到最终的回调处理程序。
async.series(
[
function (callback) {
// If some condition is met, exit series with an error
if (someCondition)
return callback('exit start', null);
return callback(null, 'Done doing something');
},
function (callback) {
if (someCondition)
return callback('error', null);
// do something else if the first thing succeeded
return callback(null, "Done doing something else")
}
],
function (err,result) {
// Handle error returned from a series callback if one occurred
if (err) {
console.log(err)
}
}
)