[英]Return value from async function from its parent
我正在为Atom文本编辑器创建构建提供程序,该编辑器是基于build
软件包的组件。 该软件包允许您运行一些测试以检查提供程序是否有资格运行,分别返回true
或false
。
我正在使用glob
来检查项目文件夹中是否存在某种文件类型,以确定是否激活构建提供程序。 例如,项目文件夹应包含LESS文件,以便为lessc
激活构建提供程序。
例:
isEligible() {
const paths = glob.sync("**/*.less");
if (paths.length > 0) {
// one or more LESS files found
return true;
}
// no LESS files found
return false;
}
我想知道异步使用glob
是否可以实现相同的目的,特别是我如何从isEligible()
返回状态。 以下不工作:
isEligible() {
return glob("**/*.less", function (err, files) {
if (err) {
return false;
}
return true;
})
}
由于该函数正在异步执行,因此return语句将不起作用,而您需要做的是使用回调,即:
isEligible(callback) {
glob("**/*.less", function (err, files) {
if (err) {
return false;
}
callback(true);
})
}
用法
//call isEligible
isEligible(function(result){
//do something with result
});
以下不起作用
是。 这绝对是行不通的 。
如果主叫方isEligible
(即build
包)不支持异步,那么你必须让你的功能同步,有没有办法解决它。 不过,您可能会提出功能请求,以提供对isEligible
的回调或接受promise作为返回值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.