javascript - 关于LeanCloud,如何在查询语句的外部获取查询的结果?
巴扎黑
巴扎黑 2017-04-10 15:08:32
[JavaScript讨论组]

最近在使用LeanCloud的时候发现有一个小问题不知道怎样解决,问题描述如下:

var userResults = [];
query.find({
  success: function(results) {
    // Do something with the returned AV.Object values
    for (var i = 0; i < results.length; i++) {
      var object = results[i];
      userResults.push(object);
      alert(object.id + ' - ' + object.get('playerName'));
    }
  },
  error: function(error) {
    alert("Error: " + error.code + " " + error.message);
  }
});
console.log(userResults);//控制台的输出结果为空,外部无法用这个方法获取到查询的结果

我想在查询语句的外部使用results结果,然后就设置了一个userResults数组作为全局变量,然后将查询到的每一个结果push到这个数组里面,但是结果却不是我想的那样。不知道大家有没有好的解决方法,赶快来分享一下。

巴扎黑
巴扎黑

全部回复(1)
伊谢尔伦

因为查询结果是异步调用,所以写在外面获取 results 结果是不正确的。

推荐的方式是使用Promise。LeanCloud 的每个异步函数调用都会返回 Promise。

参见文档:https://leancloud.cn/docs/js_guide.html#Promise

所以,在你这里,合适的写法是:

query.find().then(function(results){
    console.log(results);
}, function(error){
    // 处理错误
})

虽然你可能感觉和你上面的代码差别不大,但针对多级回调嵌套,使用 Promise 的优势就凸显出来了。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号