- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
抱歉,如果我写得不好,我是法国人。
我有一系列这样的项目:
items = [
{nom: 'xxx', prenom: 'zzz', montant: 500},
{nom: 'aaa', prenom: 'bbb', montant: 1000},
{nom: 'ccc', prenom: 'ddd', montant: 1500}
];
我想对此数组的每个项目执行 Parse 查询,以从 Parse.com 上存储的数据中检索信息。我这样做了:
for(var x = 0; x < items.length; x++) {
query.equalTo("nomTiers", items[x].nom);
console.log('Loop ' + x);
query.first({
success: function (result) {
nom = result.get('nomTiers');
prenom = result.get('prenTiers');
console.log(nom + ' ' + prenom);
console.log('Entered success');
lesCollab.push({
nom: nom,
prenom: prenom
});
},
error: function (error) {
// if it fails...
}
});
}
当我在浏览器上查看日志控制台时,我看到了以下内容:
Loop 1
Loop 2
Loop 3
...
Entered success
Entered success
...
这意味着我的应用程序开始启动 for 循环内的代码,但从未启动我的解析查询。它只是在我的 For 循环结束后才执行此操作。因此,我无法正确执行我想要的操作,并且我不明白为什么代码会这样...
如何在每次 for 循环时运行查询?为什么查询在我的 for 之后运行?
最佳答案
事实上,ParseQuery
的 first
方法是异步的,因为它涉及 HTTP 调用。在处理数组的下一个元素之前,您需要等待调用 success
回调。
为此,您需要利用 promise 。在您的情况下,您可以创建一个循环函数,当提供的回调返回的 promise 得到解决时,该函数会调用自身:
const loop = (g) => {
return new Promise((f, r) => {
return g().then(v => loop(g)).catch(f);
});
};
然后您可以使用它来实现异步循环:
var x = 0;
loop(() => {
return new Promise((resolve, reject) => {
query.equalTo("nomTiers", items[x].nom);
query.first(this.items[x], {
success: (result) => {
nom = result.get('nomTiers');
prenom = result.get('prenTiers');
console.log(nom + ' ' + prenom);
console.log('Entered success');
this.lesCollab.push({
nom: nom,
prenom: prenom
});
x++;
if (x<this.items.length) {
resolve();
}
}
});
});
});
由于 ParseQuery
不符合 Promise,因此需要对 Promise 进行额外的包装。
这是相应的plunkr:https://plnkr.co/edit/r4qb67N0FLoPWOPNbM5w?p=preview 。我使用了可以用 query.first
替换的 fakeQueryFirst
。
异步库也可能会让您感兴趣,因为它的 each
功能:
async.each(items, (item, cb) => {var x = 0;
query.equalTo("nomTiers", items[x].nom);
query.first(this.items[x], {
success: (result) => {
nom = result.get('nomTiers');
prenom = result.get('prenTiers');
console.log(nom + ' ' + prenom);
console.log('Entered success');
this.lesCollab.push({
nom: nom,
prenom: prenom
});
cb();
}
});
});
关于javascript - For 循环中的数组项中的 ParseQuery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35550507/
我有一个 Game 类,其中包含一个带有键“players”的 ParseUsers 数组: @ParseClassName(Game.GAME) public class Game extends
我有两个相关对象(商店和项目)。 Item 对象有一个包含其 Shop 对象的字段。 如何创建一个 parseQuery 来让所有商店至少有一件商品。 最佳答案 你必须写一个云代码 Elnaz jan
抱歉,如果我写得不好,我是法国人。 我有一系列这样的项目: items = [ {nom: 'xxx', prenom: 'zzz', montant: 500}, {
我正在使用解析库: compile 'com.parse.bolts:bolts-tasks:1.3.0' compile 'com.parse:parse-android:1.11.0' 我
我知道这是一个菜鸟问题,但我在其他地方找不到任何答案。我是编程新手,所以请彻底解释。 我正在与 parse.com 合作。我正在尝试获取包含 3-20 个对象的查询。我需要显示对象。经过尝试、调试和研
我有一个提要,其中包含当前按“updatedAt”排序的帖子。我的初衷是将帖子推到最后回复的提要顶部(我通过在用户留下评论时增加每个帖子中的“replyCount”字段来做到这一点),但没有完全意识到
这是我之前问题的后续问题:Parse RecyclerView Image Query 我现在有一个矛盾的空指针异常。我正在尝试按照下面概述的方式从内部方法中提取列表。 public List obj
我在通过 ParseQuery 数组进行搜索时遇到问题。 我需要不区分大小写的搜索,所以我需要将我的数组转换为小写。 我尝试了 query.whereMatches 和 query.whereCont
我正在创建一个应用程序,其中有一个顶级用户列表。我从 ParseQuery 获取列表。我希望列表跳转到特定用户。 索引返回-1,我不明白为什么。你能帮忙吗? void queryTopTen() {
我正在使用以下代码搜索我的数据浏览器。列是 Location 和 Weather,类称为 Nowcast。如果我的 Data Browser 中有纽约并且天气 "sunny",则 TextView s
我有以下代码: func init() { today := time.Now() // If ENDPOINT is empty, It'll use this hardcoded
我的查询有几个限制: ParseQuery requestsQuery = ParseQuery.getQuery(ParseConstantsUtil.CLASS_REQUEST); reques
我想向此语句返回一个字符串:StringreplyUsername = queryUsernameById(objectId); 查询方法如下: public String queryUsername
我正在尝试将图像填充到一个单元格中,但由于某种原因,它在不应该加载到其他单元格中。 我不确定是什么原因导致的。 我不确定,但是当我快速向下滚动时它会加载在不应该这样的时候进入所有 ImageView
我能够检索查询结果,但我似乎无法将它们推送到我的模板。 BlogApp.Views.Blog = Parse.View.extend({ template: Handlebars.compil
如何正确处理 throwIndexOutOfBoundsException?基本上,我正在查询用户。如果用户存在,它会显示他们的个人资料。但是,如果找不到条目,它会使我的应用程序崩溃并引发异常。我
我有一个 HorizontalScrollView 作为 ListView 的一个项目。每个 HorizontalScrollView 中都有可点击的图像。水平 ScrollView 也应该有
我想知道如何删除从 ParseQuery 返回的所有 ParseObject。ParseQuery 必须在特定字段(“keyField”)中找到包含特定字符串(“keyString”)的所有对象,如
我正在使用 parse.com 的 Android SDK,遇到了一个特殊问题。 来自 fragment 的 onCreate: 从服务器获取对象。 将其固定。 从本地数据存储中获取对象。 这是 on
当我使用 Webpack2 编译我的文件时。它显示了以下警告: "loaderUtils.parseQuery() received a non-string value which can be p
我是一名优秀的程序员,十分优秀!