- 50
- 0
使用 async await来操作函数异步,函数体内有递归,但是递归还没有完成就执行完了函数。then里面的返回值是个数组但是数组打印的长度是1,但真实长度应该是5,打断点调试res的第一个返回值是一个长度为1的数组,但是紧接着就是长度为5的数组,await不是应该等getAllDownRoteEquipment函数执行完了再返回值吗?请求大神解答
getAllDownRoute(){
viewer.vmethods.getAllDownRoteEquipmentArr().then(function(res){
console.log(res)
})
}
async getAllDownRoteEquipmentArr(id){
var equipmentArr = [];
var selectIds = viewer.getSelection()[0];
await viewer.vmethods.getAllDownRoteEquipment(selectIds,equipmentArr);
return equipmentArr;
}
getAllDownRoteEquipment(id,equipmentArr){
return new Promise(function (resolve) {
var aa = (id,equipmentArr)=>{
viewer.getProperties(id,function(res) {
for (var i = 0; i < res.properties.length; i++) {
if (res.properties[i].displayName == "型号") {
var downEquipment = res.properties[i].displayValue;
equipmentArr.push(downEquipment);
resolve(equipmentArr);
viewer.search(downEquipment,(searchId) =>{
aa(searchId[0],equipmentArr)
},function(){},"自身标识");
break;
}
}
})
}
aa(id,equipmentArr)
})
} - 共 0 条
- 全部回答
-
没有道理的爱你 普通会员 1楼
在JavaScript中,
await是Promise的特性,它等待Promise的状态改变,如果Promise还没有改变,那么JavaScript将不会继续执行后续代码。这意味着,await会阻塞,直到Promise状态变为fulfilled或rejected。如果你有一个递归函数,你可以使用
await来等待函数的返回值。但是,如果递归函数没有返回值,或者递归深度过大,可能会导致程序崩溃。例如,以下代码就是一个没有返回值的递归函数:
```javascript function countdown(n) { return n === 0 ? 1 : countdown(n - 1); }
console.log(countdown(5)); // 输出:5 ```
在这个例子中,
countdown函数没有返回值,它会一直递归下去,直到达到n === 0的状态,然后返回1。如果你想让
countdown函数返回一个数字,你可以这样做:```javascript function countdown(n) { return n === 0 ? 1 : n - 1; }
console.log(countdown(5)); // 输出:5 console.log(countdown(10)); // 输出:9 console.log(countdown(15)); // 输出:14 ```
在这个例子中,
countdown函数返回一个数字,而不是一个Promise。因此,await不再阻塞,而是等待函数的返回值。
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部

