有关promise疑问,return promise().then(return '1'),为何仍返回promise类型

发布于 2022-09-12 01:05:25 字数 909 浏览 21 评论 0

代码如下所示。数据结果为 hhh

我不明白为什么,可以输出 hhh,因为 hhh 并不是被resolve,而是在.then中被return的值。

若理解为,return promise().then() 会执行完.then操作,则testFunction 返回的应该是 hhh 字符串,这样的话 testVal 为何仍可使用.then操作?

function getInput (fileName) {
  const promise = new Promise((resolve, reject) => {
    setTimeout(_ => {
      resolve(fileName)
    }, 2000)

  })
  return promise
}

const testFunction = (nothing) => {
  return getInput('a.json').then(_ => {
    return 'hhh'
  })
}

let testVal = testFunction()
testVal.then(res => {
  console.log(res);
})

若去掉.then 操作,testFunction改为如下所示,则输出为a.json

const testFunction = (nothing) => {
  return getInput('a.json')
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

拧巴小姐 2022-09-19 01:05:25

因为then方法返回的是一个新的Promise实例(注意,不是原来那个Promise实例)。因此可以采用链式写法,即then方法后面再调用另一个then方法。
它还是Promise,而非字符串。
参考阮一峰大神的es6,好好看看吧。

锦欢 2022-09-19 01:05:25

Promise/A+ 标准就是这么规定的. 所以所用对 Promise 的实现的库大都有这个特性, 包括ES6 对 Promise 的实现也遵守这条规定.
好处很多,比如 链式用法, 比如 用 returnthrow 来控制流程等

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文