使用wait时返回空?

时间:2019-07-10 16:06:46

标签: javascript node.js

使用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?
}

3 个答案:

答案 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();
    }
}