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

[App引擎] 返回值的问题. 求解释

[复制链接]
发表于 2014-11-19 22:03:06
会返回未定义...判断只能放在function里才有效  如果是很长的嵌套要怎么办?
求解

  1. apiready = function() {
  2.     initFrame();
  3.     }
  4. function initFrame(){
  5.     alert(existThumbCache());
  6. }
  7. function existThumbCache(){
  8.     var fs = api.require('fs');
  9.     fs.exist({
  10.         path: "fs://thumbcache/thumb.json"
  11.     },function(ret,err){
  12.         if(!ret.exist){
  13.             return false;
  14.         }else{
  15.             return true;
  16.         }
  17.     });
  18. }
复制代码




0
帖子
0
勋章
9
Y币
还是用promise来处理吧,ES6也支持了。
  1. apiready = function() {
  2.         initFrame();
  3.         }
  4. function initFrame(){
  5.         existThumbCache()
  6.         .then(function(returnData){
  7.                 //成功返回
  8.         },function(err){
  9.                 //错误处理
  10.         })
  11. }
  12. function existThumbCache(){
  13.         var promise = new Promise();
  14.         var fs = api.require('fs');
  15.         fs.exist({
  16.                 path: "fs://thumbcache/thumb.json"
  17.         },function(ret,err){
  18.                 if(!ret.exist){
  19.                         promise.resolve( false );
  20.                 }else{
  21.                         promise.resolve( true );
  22.                 }
  23.                 if(err){
  24.                         promise.reject(err)
  25.                 }
  26.         });
  27.         return promise;
  28. }
复制代码
11
帖子
0
勋章
138
Y币
貌似apicloud的返回值有问题,前面我用了返回值也返回不了
4
帖子
0
勋章
1277
Y币
fs的方法应该是异步的,不会阻塞后面的JS执行,如果要判断文件是否存在,需要在callback回调里做处理:


  1. var fs = api.require('fs');
  2.     fs.exist({
  3.         path: "fs://thumbcache/thumb.json"
  4.     },function(ret,err){
  5.         if(!ret.exist){
  6.             //do something
  7.         }else{
  8.             //do something
  9.         }
  10.     });
复制代码
15
帖子
0
勋章
3046
Y币
写成一个个 funciton
9
帖子
0
勋章
173
Y币

目前也只能这样了,,一个一个 function嵌套进去
53
帖子
0
勋章
522
Y币
LZ不太理解回调的玩法
不知道 能不能用 nodejs 里面的 then 模块,那样就不要多层嵌套了,这是nodejs 的 解决方案
您需要登录后才可以回帖 登录

本版积分规则