快速提问。
对于复杂的Promise函数,最好像这样组织代码:
一个独特的功能,每个功能旁边的功能最小
var a = () => {
return new Promise((resolve, reject) => {
return promise1().then((result1) => {
return promise2(result1)
}).then((result2) => {
return promise3(result2)
}).then((result3) => {
return promise4(result3)
}).then((result4) => {
resolve(result4)
}).catch((error) => {
reject(error)
})
}
或者像这样
将一些复杂性封装到其他函数中以获得更简单的高级函数。
var b = () => {
return new Promise((resolve, reject) => {
return promise12().then((result12) => {
return promise34(result12)
}).then((result4) => {
resolve(result4)
}).catch((error) => {
reject(error)
})
})
}
var promise12 = () => {
return new Promise ((resolve, reject) => {
return promise1().then((result1) => {
return promise2(result1)
}).then((result2) => {
resolve(result2)
}).catch((error) => {
reject(error)
})
})
}
var promise34 = (result2) => {
return new Promise ((resolve, reject) => {
return promise3().then((result3) => {
return promise4(result4)
}).then((result) => {
resolve(result4)
}).catch((error) => {
reject(error)
})
})
}
答案 0 :(得分:2)
组织代码没有“最好的方法”。您应该考虑将您的功能分成逻辑模块,以便它们的使用是“直观的”。
此外,您还没有提到generators
(旁边有*
的功能),这是一个新的JavaScript ES6功能。很可能在将来这些生成器函数将成为处理异步代码的“事实上”的方式,因为它们设计得很好,可以处理它。它们也易于阅读和测试。您可以通过Max Stoiber观看此(目前)free course以了解有关它们的更多信息。本课程专门用于说明如何使用生成器函数编写异步代码。