Dav*_*ber 6 javascript es6-promise
使用异步 javascript 时,每秒函数如下所示:
function_name()
{
return new Promise((resolve,reject) => {
// do some async task
resolve();
});
}
Run Code Online (Sandbox Code Playgroud)
即使使用 es6 async/await,我也无法避免“return new Promise((resolve,reject) => { ...”这一部分。
有没有另一种方法可以在没有所有这些重复行的情况下编写这样的代码?
谢谢。
首先,您应该避免使用promise 反模式,该模式将新的 promise 包装在已经返回 promise 的其他函数周围。如果你这样做,那么你可以完全停止这样做,只返回异步操作已经创建的承诺。这将立即简化事情。
如果您有未承诺的旧式基于回调的操作,那么一般来说,您应该只承诺一次基本异步函数,然后仅使用返回承诺的函数版本进行编码。然后,您的所有逻辑流都使用了 promise,您将不会new Promise(...)
在代码的常规流中看到样板。
此外,这些天您通常可以避免手动承诺。如果您使用的是 node.js,util.promisify()
则可用于创建遵循 node.js 调用约定的任何异步函数的promisified 版本。
或者,如果您使用 Bluebird 承诺库,您可以Promise.promisify()
使用Promise.promisifyAll()
.
使用这些替代方法中的任何一种都可以避免出现您认为反对的样板文件。
但是,如果您要自己从头开始手动承诺每个函数而不使用任何其他辅助函数,则无法避免new Promise(...)
语法。这就是它所需要的。
因此,您的大部分编码不应涉及new Promise(...)
. 如果是这样,那么您需要向我们展示您的一些示例,我们可以建议更好/不同的编码方式。
归档时间: |
|
查看次数: |
12531 次 |
最近记录: |