<?php $fines=Yii::$app->db->createCommand('select sum(fines) as fines from lib_chekout '); ?>
是一个Mongoose Schema。我有一个问题:
问:为什么我们需要&#34;返回&#34;旁边的声明&#34; db.doneTodo ...&#34;?为什么不是第二个&#34;返回&#34;足够?
我的推理:由于我们将map应用于每个元素,因此我们正在应用此功能:
<h4 class="pull-left" style="font-size: 20px"> Total fines Collected Till Today : </h4> <p class="text-center" style="font-size: 20px"> <?= $fines ?> </p>
和
Promise.all(membersArray.map((member) => {
return db
.doneTodo
.find({'victor._id': member._id})
.then((userVictories) => {
return {
email: member.email,
victories: userVictories.length
};
});
})).then((memberStats) => {
console.log(membersStats);
});
db.doneTodo
评估到
{
return db
.doneTodo
.find({'victor._id': member._id})
.then((userVictories) => {
return {
email: member.email,
victories: userVictories.length
}
});
}
SO DOES:
.then((userVictories) => {
return {
email: member.email,
victories: userVictories.length
}
评估到
{
email: member.email,
victories: userVictories.length
}
因此我们回来了吗?
答案 0 :(得分:0)
是的,你是部分正确的。 .then()
会返回Promise
,如果您从.then()
中返回值,则会有效地返回Promise.resolve(<value>)
。
因此,确实,以下代码确实返回(或者更确切地说,使用该对象解析承诺作为值)对象。
.then((userVictories) => {
return {
email: member.email,
victories: userVictories.length
}
});
问:为什么我们需要&#34;
return
&#34;旁边的声明&#34;db.doneTodo...
&#34;?为什么 不是第二个&#34;return
&#34;足够?
您希望将结果返回到Promise.all()
函数调用,该调用将所有已解析的promise值包装在一个数组中,然后从.all()
函数返回的promise中解析。
如果您要省略顶部return
语句,代码仍会运行,但如果您将Promise.all(...).then((arrayOfResults) => { ... })
链接起来,arrayOfResults
将包含多个undefined
值。