javascript - 两个匿名函数之间的简单 "then" promise

标签 javascript

我有两个想要连续执行的匿名函数。我怎样才能做到 promise 呢?

在这个简化的示例中,需要连续执行的两个函数是“saveAs”匿名函数内的“renameReport”和“saveReport”。

“renameReport”和“saveReport”都使用 jQuery 进行 AJAX 调用。仅仅在下一行执行 renameReport 和 saveReport 是不行的。

var renameReport = function () {
    ...
}

var saveReport= function () {
    ...
}

var saveAs = function () {
    renameReport().then(saveReport()); //not working
};

这会导致错误:“TypeError:renameReport(...) 未定义”

最佳答案

要使用 promise ,您必须有 promise 并返回它们,以便可以将其链接起来。因此,如果您确实有一个带有 promise 的函数,那么您可能不会返回该 promise 。

您还调用了该函数,但没有在 then 中引用它。当您添加 () 时,它会执行该函数并将其返回的内容分配给 then。因此删除 () 这样它就不会被执行。

您需要的基本程序流程如下所示。

var renameReport = function () {
  console.log('renameReport')
  return new Promise( function (resolve, reject) { 
    window.setTimeout(function () {
      console.log('renameReport timeout')
      resolve('hello')  
    }, 2000)
  })
}

var saveReport = function (data) {
  console.log('saveReport', data)
}

var saveAs = function () {
    renameReport().then(saveReport);
}

saveAs()

关于javascript - 两个匿名函数之间的简单 "then" promise ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59197417/

相关文章:

javascript - 如何在 prism.js 中使用数据手册

php - 如何使用 $.post 包含在新页面的请求中

AJAX 调用后 JavaScript 不工作 - AJAX 选项卡

javascript - 如何在 jquery 中重写 javascript 函数?

javascript - JS : check if browser supports focus options

javascript - 如何设置 Nginx 服务器来使用 WebSockets?

javascript - 使用 Javascript 关闭侧边栏

javascript - 在折叠列表中时不会选择复选框

javascript - Ember : Testing WillDestroyElement Logic of Component in an Integration Test

javascript - HTML5 Canvas 随机方向