如何从回调函数返回值?

UA_:

如何从回调函数返回值?

代码

function storeData(data) {
  const id = "5f354b7470e79f7e5b6feb25";

  const body = { name: "john doe" };

  bucket.insert(id, body, (error, result) => {
    console.log(error, result); // i want to return error & result from this callback
  });
}

export default {
  async createAd(_, { data }, { request }) {
    try {
      const dataa = await storeData(data);

      return; // to here
    } catch (error) {
      console.log(error);
    }
  },
};

在这里,我需要从bucket.insert回调函数createAd返回值(错误,结果)然后从那里返回该值。

 bucket.insert --> createAd 

它实际上应该如何工作

  • createAd函数调用时
  • createAd函数应调用storeData(data)将数据存储在数据库中的函数
  • 用功能存储数据后 bucket.insert
  • bucket.insert回调返回值errorresult
  • storeData应该将bucket.insert回调值返回createAd
  • createAd返回值应包含storeData返回值

bucket.insert 应该包含一个回调,否则会引发错误 Third argument needs to be an object or callback.

解决方案尝试

  • 使用nodejs util.promisify来实现bucket.insert的承诺
贾斯珀·切塞莱特(Jasper Chesselet):

您可以创建一个自定义的“ Promisify”。

例如:

function storeData(data) {
  return new Promise((resolve, reject) => {
    const id = "5f354b7470e79f7e5b6feb25";

    const body = { name: "john doe" };

    bucket.insert(id, body, (error, result) => {
      if (error) reject(error)
      
      resolve(result)
    });
  })
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章