我正在使用NodeJS和Express并迭代一串字符串,例如:
compile 'com.google.android.gms:play-services:10.2.0'
compile 'com.google.firebase:firebase-database:10.2.0'
如果字符串包含字母,则该函数应该关闭并调用GET方法从数据库中检索值。到目前为止我的代码看起来像这样:
[ "1" , "+" , "B4", "*", "8"]
我的问题是,获取值的方法比处理线程需要更长的时间,导致
function processFormula(formula) {
console.log(formula)
var arr = formula.split(" ");
for (var i = 0; i < arr.length; i++) {
if (arr[i].match(/[a-z]/i)) {
/* fetch the value and store it in arr[i] */
}
return arr.toString();
}
出现了很多。我正在努力理解我应该在哪里放置我的回调来迭代地处理这种情况?
非常感谢任何帮助!
答案 0 :(得分:1)
协调很棘手。您可以尝试使用使用promises的axios
之类的HTTP请求库。然后,您可以使用Promise.all
来协调所有请求。
答案 1 :(得分:0)
你可以在for中添加另一个并返回到最后一个元素:
for(var i = 0; i < arr.length; i++){
if (arr[i].match(/[a-z]/i)) {
/* fetch the value and store it in arr[i] */
}
if(i == arr.length-1){
return arr.toString();
}
}
并建议,尝试使用array.length
外部循环,因为每个循环您将计算数组的长度以检查条件是否已达到,因此每次都要通过数组。 (我在答案中没有改变这一点)。只需在循环之前执行此操作并执行var size = array.length