使用await时,什么都不返回什么是正确的方法?
用法:
exports.run = async => {
try {
await update(data);
} catch(err) {
console.error(err);
}
};
功能:
function update() {
if (data) {
return updateRecord(data).promise();
}
// does not need to be rejected.
return; //Is this correct?
return Promise.resolve(); //Is this correct?
}
答案 0 :(得分:1)
由于update()
不是async
,请返回Promise.resolve()
表示“无”。这样,函数的签名(为方便起见,使用TypeScript语法)将是(...) => Promise
,而不是(...) => Promise | undefined
。
您还可以创建函数async
,在这种情况下,返回的undefined
将在内部包装为一个Promise。
答案 1 :(得分:0)
最简单的方法是根本不使用return
语句,以便返回的承诺在函数末尾以undefined
解析:
async function update() {
if (data)
return updateRecord(data).promise();
}
但是您也可以明确地将其拼写出来,并且当您返回Promise.resolve(…)
时,您无需将该函数标记为async
:
async function update() {
if (data)
return updateRecord(data).promise();
return;
}
async function update() {
if (data)
return updateRecord(data).promise();
return undefined;
}
function update() {
if (data)
return updateRecord(data).promise();
return Promise.resolve();
}
function update() {
if (data)
return updateRecord(data).promise();
return Promise.resolve(undefined);
}
async function update() {
return data ? updateRecord(data).promise() : undefined;
}
function update() {
return data ? updateRecord(data).promise() : Promise.resolve();
}
function update() {
return data ? updateRecord(data).promise() : Promise.resolve(undefined);
}
他们都取得了相同的成就。使用最简单,最易读的内容。
答案 2 :(得分:-1)
您可以不添加任何其他显式返回-只需在函数中添加async关键字,它将正确执行
async function update() {
if (data) {
return updateRecord(data).promise();
}
}