我的javascript代码遇到了一些问题。在我的代码中,返回函数是:
var datas = {};
datas['results'] = [];
var j = 0;
function brand(j) {
if (j >= data.result[0].brand.length) {
//console.log(datas);
return brand(j + 1);
}
Brand.findById(data.result[0].brand[j], function (err1, result1)
{
datas['results'][j] = {
brand: result1.brand_name,
dosage: result1.dosage_id
};
brand(j + 1);
//console.log(datas);
});
//console.log(datas);
}
value = brand(j);
console.log(value);
在控制台上打印输出,即
console.log(datas)
我得到了预期的输出,但当我获取返回值时,它显示未定义的
value = brand(j);
console.log(value); // value is undefined
有人可以指导我解决这个问题吗? 万分感谢
答案 0 :(得分:1)
您正在改变数据对象本身,这就是console.log(数据)工作的原因。此外,要使递归起作用,您需要
$str = @preg_replace('/\&\#([0-9]+)\;/me', "code2utf('\\1',{$lo})",$str);
$str = @preg_replace('/\&\#x([0-9a-fA-F]+)\;/me', "codeHex2utf('\\1',{$lo})",$str);
假设你的其余代码是正确的
编辑:在您发布其余代码之后,很明显您的问题在于异步代码。基本上,品牌功能没有任何价值,但它一直在运行。你有几种方法来解决这个问题,因为我不知道你在哪个堆栈,我建议你去看一些诺言库