我长期使用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)
}
什么是正确的方法?
答案 0 :(得分:5)
您不必使用回调功能才能切换到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);
}
}