Javascript 在Node.js SDK中编写异步函数的首选方法

Javascript 在Node.js SDK中编写异步函数的首选方法,javascript,node.js,async-await,Javascript,Node.js,Async Await,我在一些地方读到,在Node.js中编写异步函数的经典方式/惯例是。我正在为Node.js用户编写一个开源SDK,这仍然是一条路要走,还是应该改为使用async/await?async/await功能更强大。我同意,它在ES6中: async function thisThrows() { throw new Error("Thrown from thisThrows()"); } async function run() { try { a

我在一些地方读到,在Node.js中编写异步函数的经典方式/惯例是。我正在为Node.js用户编写一个开源SDK,这仍然是一条路要走,还是应该改为使用async/await?

async/await功能更强大。我同意,它在ES6中:

async function thisThrows() {
    throw new Error("Thrown from thisThrows()");
}

async function run() {
    try {
        await thisThrows();
    } catch (e) {
        console.error(e);
    } finally {
        console.log('We do cleanup here');
    }
}

run();
无论如何,我个人用这个:

    async function test() {
        try {
        await stuff()
        } catch (error) {
            console.error('Something went wrong!\n', error.stack, '\n')
            throw error
        }
    }

Javascript中的现代异步API设计是在异步操作完成时返回解析或拒绝的承诺,因为承诺比普通回调更容易管理异步代码和错误流,特别是当代码流中存在异步操作序列时

大多数新设计的nodejs API都是使用promise接口设计的,而nodejs中大多数较旧的回调风格接口都为promise接口添加了一个选项。转向promises显然是Javascript异步编程的一种趋势,这对于NodeJ来说是绝对的

这允许调用者使用
async/await
.then().catch()
-他们的选择

请注意,您的API设计并不特别“符合”
async/await
。这取决于打电话的人。如果您从API返回承诺,那么调用方可以选择使用
async/await
.then().catch()
,如果他们愿意的话