我已经使用Promise很长一段时间了,它们总是我用来控制程序工作流程的“东西”。例:
Promise
.resolve(obj)
.then(doSomething1)
.then(doSomething2)
.catch(handleError)
而现在,我想改为试用风格,但我不知道究竟什么是正确的方法。
V1:
try {
var body = await Promise
.resolve(obj)
.then(doSomething1)
.then(doSomething2)
} catch (error) {
callback(error)
}
callback(null, {
statusCode: 200,
body
})
V2:
try {
var body = await Promise
.resolve(obj)
.then(doSomething1)
.then(doSomething2)
.then(body => {
callback(null, {
statusCode: 200,
body
})
})
} catch (error) {
callback(error)
}
什么是正确的方法?
您不必使用回调函数来切换到async
/ await
。 async
函数只是一个Promise-returns函数,await
就是为了方便起见。所以相当于你原来的功能就是:
async function fn() {
try {
const obj = ...;
const result1 = await doSomething1(obj);
const result2 = await doSomething2(result1);
return result2;
} catch (err) {
return handleError(err);
}
}
如果你确实想要那个回调:
async function fn(callback) {
try {
const obj = ...;
const result1 = await doSomething1(obj);
const result2 = await doSomething2(result1);
callback(null, result2);
} catch (err) {
callback(err);
}
}