【问题标题】:Promise is not resolved to a value?Promise 不解析为一个值?
【发布时间】:2016-04-14 10:12:17
【问题描述】:

我在以下代码中找不到我的错误。 我想要的只是 save() 返回真或假,但它总是undefined

function mypromise() {
  return new Promise((resolve, reject) => {
    resolve("it worked")
  })
}

function save() {
  mypromise().then(success => {
    return true
  }, error => {
    return false
  });
}

var saveSuccessful = save();
console.log('success', saveSuccessful) // undefined ?

【问题讨论】:

  • 回调中的代码是异步执行的。
  • 你的函数save() 没有返回任何东西——你期望什么?
  • @BenjaminGruenbaum 当我做save mypromise().then() 时,我得到了未决的承诺。有没有办法直接返回值?
  • 你的save 函数什么也不返回。请确保,不要错过从这里返回承诺。然后你应该使用.then 来检查保存是否成功

标签: javascript promise ecmascript-6


【解决方案1】:

只有在 Promise 执行完成后,你才会知道保存是否成功,如下所示:

function mypromise() {
  return new Promise((resolve, reject) => {
    resolve("it worked")
  })
}

function save() {
  mypromise().then(success => {
    console.log('success');
    return true;
  }, error => {
    return false
  });
}

save();

如果你可以写var saveSuccessful = save();,这意味着save()同步的,根据同步的定义,但你明确希望它是异步的。 p>

【讨论】:

猜你喜欢
  • 2017-11-20
  • 1970-01-01
  • 1970-01-01
  • 2017-05-31
  • 2021-08-03
  • 1970-01-01
  • 2019-08-18
  • 2016-09-06
  • 2016-05-18
相关资源
最近更新 更多