cqwcns 发表于 2021-6-25 13:22

JS调用函数,如何实现等调用函数返回再继续?

代码大概是这样的:

      let thisArray = that.funcGetAddressList(keyword, 'town')
      console.log(thisArray)

但如果这样执行,只能输出undefined,因为输出时funcGetAddressList未执行完成未返回。
如果要代码等待funcGetAddressList返回再继续,如何实现比较简单?谢谢

不知道改成啥 发表于 2021-6-25 13:30

这个得看funcGetAddressList里面的内容你这点代码没用。

wangsheng66 发表于 2021-6-25 13:31

setTimeout

sundeheng 发表于 2021-6-25 13:34

用Promise或者async await试试?

Gang_Yu 发表于 2021-6-25 13:35

要不然在funcGetAddressList 里写一个回调函数,执行完后回调出来处理。
还有一个粗暴的办法,循环判断 thisArray 是否为空,但是对于js的单线程来说………………嗯,就这样。

冉盛 发表于 2021-6-25 13:49

本帖最后由 冉盛 于 2021-6-25 13:51 编辑

我在vue函数调用其他函数的时候 函数返回值为undefined , 并不是调用的函数未执行,而是获取不到函数的返回值而已;;;
可以在被调用的那个函数里面传入一个回调函数;
参考链接:https://blog.csdn.net/clc_2020/article/details/109355643

lucklys 发表于 2021-6-25 14:16

async function text(){
let thisArray =await that.funcGetAddressList(keyword, 'town')
console.log(thisArray)
}
text()

lucklys 发表于 2021-6-25 14:24

冉盛 发表于 2021-6-25 13:49
我在vue函数调用其他函数的时候 函数返回值为undefined , 并不是调用的函数未执行,而是获取不到函数的返 ...

他那个写的就不对 那样子 return 不管你什么时候调用 不可能拿到返回值好好看看this指向吧

SKnight 发表于 2021-6-25 14:28

可以用回调函数实现
```javascript
that.funcGetAddressList(keyword, 'town', function(thisArray){
        console.log(thisArray)
})
```
funcGetAddressList要多加一个参数
```javascript
function funcGetAddressList(参数一,参数二,callback){
        // ...
        // ...
        // ...
       
        // 执行完后调用callback
        callback(thisArray)
}
```

可以搜一下JavaScript异步编程

lncyq 发表于 2021-6-25 14:59

都是高手啊,真羡慕你们懂这专业
页: [1] 2
查看完整版本: JS调用函数,如何实现等调用函数返回再继续?