firestore.collection("products").where("OrderNo", "==", inputx)
.get()
.then(function(querySnapshot) {
querySnapshot.forEach(function(doc) {
var Nameout = doc.get("Name");
var path = 'products/' + inputx + '-' + Nameout;
tangRef = storageRef.child(path);
firebase.auth().signInAnonymously().then(function() {
tangRef.getDownloadURL().then(function(url) {
document.querySelector('img1').src = url;
}).catch(function(error) {
console.error(error);
});
});
}).then(function() {}).catch(function(error) {})
})
我已经提到了其他有关回复承诺的解决方案,但我还没有理解这意味着什么。
答案 0 :(得分:3)
forEach
没有返回Promise
,它会隐式返回undefined
结帐
firestore.collection("products").where("OrderNo", "==", inputx)
.get()
.then(function (querySnapshot) {
querySnapshot.forEach(function (doc)
{
var Nameout = doc.get("Name");
var path = 'products/' + inputx + '-' + Nameout;
tangRef = storageRef.child(path);
firebase.auth().signInAnonymously().then(function () {
tangRef.getDownloadURL().then(function (url) {
document.querySelector('img1').src = url;
}).catch(function (error) {
console.error(error);
});
});
})
})
答案 1 :(得分:1)
forEach
不会返回任何内容,因此调用它始终会生成undefined
。
您可能想要map
和Promise.all
:
firestore.collection("products").where("OrderNo", "==", inputx)
.get()
.then(function(querySnapshot) {
Promise.all(querySnapshot.map(function(doc) { // ***
var Nameout = doc.get("Name");
var path = 'products/' + inputx + '-' + Nameout;
tangRef = storageRef.child(path);
return firebase.auth().signInAnonymously().then(function() { // ***
tangRef.getDownloadURL().then(function(url) {
document.querySelector('img1').src = url;
}).catch(function(error) {
console.error(error);
});
});
})) // ***
.then(function() {})
.catch(function(error) {})
})