【问题标题】:How to work with a function that depends on another function's result using NodeJS如何使用 NodeJS 处理依赖于另一个函数结果的函数
【发布时间】:2017-03-27 15:22:41
【问题描述】:

让我以更好的方式解释我的问题:

我正在构建一个 TwitterBot,它可以创建随机图像并发布推文。
为此,我在 NodeJS 应用程序中有两个函数,一个名为 createImage,另一个名为 tweetIt

createImage 创建一个 PNG 文件。
tweetIt 拍下这张图片,并使用 twitter API 将其发送出去。

所以我有这样的事情:

function createImage(){
  //creates an image and saves it on disk
}

function tweetIt(){
  //takes the image from the disk and tweets it
}

我需要在tweetIt() 之前执行createImage(),因为第二个函数完全取决于第一个函数产生的结果。

createImage();
tweetIt();

但是 NodeJS 并行执行它们。如何在执行第二个功能之前强制完成一个功能?我尝试了一些我在这里找到的带有回调和外部包的解决方案,但没有任何效果。这里有人知道我做错了什么吗?谢谢!

【问题讨论】:

  • tweetIt 创建图像后不能在 createImage 内部调用的任何原因?
  • 您需要向我们展示createImage() 的代码,以便我们建议如何与完成时间同步(假设它有一些异步操作)。

标签: javascript node.js file asynchronous twitter


【解决方案1】:

你可以让 createImage 返回一个承诺

function createImage(){
  return new Promise((resolve, reject) => {
    // create image then resolve promise.
    // ...
    resolve()
  })
}

function tweetIt() {
  //takes the image from the disk and tweets it
}

createImage().then(tweetIt)

【讨论】:

  • 糟糕,我的意思是createImage().then(tweetIt)
猜你喜欢
  • 2022-07-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-06
  • 2014-07-08
  • 2019-12-04
  • 2019-12-04
  • 1970-01-01
相关资源
最近更新 更多