Firebase 谷歌云功能-警告避免嵌套承诺承诺/不嵌套
给定以下函数,我得到警告: 警告避免嵌套承诺承诺/不嵌套(第6行) 我应该如何重新构造函数以修复警告Firebase 谷歌云功能-警告避免嵌套承诺承诺/不嵌套,firebase,firebase-realtime-database,google-cloud-functions,Firebase,Firebase Realtime Database,Google Cloud Functions,给定以下函数,我得到警告: 警告避免嵌套承诺承诺/不嵌套(第6行) 我应该如何重新构造函数以修复警告 function FindNearbyJobs(uid, lat, lng){ return admin.database().ref(`users/${uid}/nearbyjobs`).remove().then(data => { return new Promise((resolve, reject) => { const geoQueryJobs =
function FindNearbyJobs(uid, lat, lng){
return admin.database().ref(`users/${uid}/nearbyjobs`).remove().then(data => {
return new Promise((resolve, reject) => {
const geoQueryJobs = geoFireJobs.query({center: [lat, lng], radius: 3 });
geoQueryJobs.on("key_entered", (key, location, distance) => {
return Promise.all([admin.database().ref(`jobs/${key}/category`).once('value'), admin.database().ref(`users/${uid}/account/c`).once('value')]).then(r => {
const cP = r[0];
const cO = r[1];
if (cO.val().includes(cP.val())){
return admin.database().ref(`users/${uid}/nearbyjobs/${key}`).set({ d: distance });
}else{
return null;
}
});
});
geoQueryJobs.on("ready", () => {
resolve();
});
});
});
}
您有一个promise
then()
调用嵌套在另一个promise的then()
中。这被认为是糟糕的风格,并使您的代码难以阅读。如果你有一系列的工作要做,最好将你的工作一个链接到另一个中,而不是将一个嵌套在另一个中。因此,不要像这样嵌套:
doSomeWork()
.then(results1 => {
return doMoreWork()
.then(results2 => {
return doFinalWork()
})
})
doSomeWork()
.then(results => {
return doMoreWork()
})
.then(results => {
return doFinalWork()
})
按如下顺序进行工作:
doSomeWork()
.then(results1 => {
return doMoreWork()
.then(results2 => {
return doFinalWork()
})
})
doSomeWork()
.then(results => {
return doMoreWork()
})
.then(results => {
return doFinalWork()
})
搜索该错误消息也会产生。我尝试了上述解决方案,但它对我无效,或者我做得不对。这对我有效,我只是在
doSomeWork
之前添加了一个返回值
,并在最后一页底部添加了一个catch
。