帖子
帖子
用户
博客
课程
显示全部楼层
7
帖子
0
勋章
60
Y币

[其他] 如何等待回调函数执行完毕?

[复制链接]
发表于 2015-7-1 22:15:47
readStr="";//全局参数
function readfile() {
    api.readFile({
        path:'fs://mp.txt'
    }, function(ret, err){
        if(ret.status){
            api.alert({msg:"读取的内容"+ret.data});
            readStr=ret.data;
        } else{
            api.alert({
                msg: '错误码:'+err.code+'错误信息'+err.msg
            });
        }
    });
}

readfile();//函数-读取文件内容

api.alert({title:"提示",msg:"上次的内容"+readStr});//这句执行的时候,读文件的回调函数还没有被执行

看到论坛里面很多类似的帖子,但都没有得到满意的解决方案,我也就不会了。
最下面一行的代码会比回调函数先执行,如何能等待回调函数读取文件内容以后,再执行最后一行的代码呢?

7
帖子
0
勋章
60
Y币
目前能想到的解决方案就是 全部逻辑代码写到这个回调函数里面,这样感觉不太好。
8
帖子
0
勋章
1万+
Y币
路飞 发表于 2015-7-1 22:22
目前能想到的解决方案就是 全部逻辑代码写到这个回调函数里面,这样感觉不太好。 ...

由于 JavaScript 的异步模式,后续的逻辑必须写到回调中,否则是无法得到正确的结果的。
另外,不需要将全部逻辑代码写到同一个回调里面,回调里面一样是可以调用其他函数的。
请参考代码:
  1. readStr="";//全局参数
  2. function readfile(callback) {
  3.     api.readFile({
  4.         path:'fs://mp.txt'
  5.     }, function(ret, err){
  6.         if(ret.status){
  7.             api.alert({msg:"读取的内容"+ret.data});
  8.             readStr=ret.data;
  9.             callback && callback();  // callback 回调存在则执行回调函数
  10.         } else{
  11.             api.alert({
  12.                 msg: '错误码:'+err.code+'错误信息'+err.msg
  13.             });
  14.         }
  15.     });
  16. }

  17. readfile(function() {
  18.     api.alert({title:"提示",msg:"上次的内容"+readStr});
  19. });//函数-读取文件内容
复制代码
您需要登录后才可以回帖 登录

本版积分规则