繁体   English   中英

将此 node.js 片段包装在 function 中的最佳方法是什么?

[英]What is the best way to wrap this node.js snippet in a function?

我有一个这种格式的代码示例:

someFunction(data)
                  .then(response => {
                        return response.text();
                  }).then(text => {
                        console.log(text)
                  }).catch(err => {
                        console.error(err)
                  });

我想把它塞进我自己的 function 并通过我的代码调用它。

let result = await callSnippet(myData);

这就是我一直在做的……这是最好的方法吗? 我应该在这里使用 promise 吗?

async callSnippet(data) {
    let response = null
    await someFunction(data)
                .then(  d=> { return d.text(); })
                .then(  d=> { response = {success:true,  result:d }; })
                .catch( d=> { response = {success:false, result:d }; })
    return response;
}

您不应该同时使用await.then() 你应该做的是:

async callSnippet(data) {
    let response = null;
    try{
        var d = await someFunction(data).text();
        response = {success: true, result: d};
    } catch(e){
        response = {success: false, result: d};
    }
    return response;
}

await关键字从Promise检索值,因此您不能在该值上使用.then() 但是,您可以通过使用try...catch语句来实现相同的功能。

通常,如果您正在等待等待事情,您将等待每个步骤而不使用 then。

async callSnippet(data) {
  try {
    const response = await someFunction(data);
    const text = await response.text();
    return { success: true,  result: text };
  } catch (e) {
    return { success: false, result: e };
  }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM