Javascript 承诺不是一种价值吗?

Javascript 承诺不是一种价值吗?,javascript,promise,ecmascript-6,Javascript,Promise,Ecmascript 6,我在下面的代码中找不到我的错误。 我只想save()返回true或false,但它总是未定义 function mypromise() { return new Promise((resolve, reject) => { resolve("it worked") }) } function save() { mypromise().then(success => { return true }, error => { return f

我在下面的代码中找不到我的错误。 我只想save()返回true或false,但它总是
未定义

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 ?

只有在承诺完成执行后,您才能知道保存是否成功,如下所示:

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()
是同步的,根据同步的定义,但您明确希望它是异步的。

回调中的代码是异步执行的。您的函数
save()
不会返回任何东西-您期望什么?@BenjaminGruenbaum当我执行
save mypromise()时。然后()
我得到了尚未兑现的承诺。有没有直接返回值的方法?
save
函数的可能重复项不会返回任何值。请确保,不要错过从这里返回的承诺。然后您应该使用
。然后
检查保存是否成功,并查看更多详细信息。