javascript - then() 是否可以返回一个值?

标签 javascript promise es6-promise

我读过,当您从 then() 返回一个值时,它会被包装在 Promise 中并作为 Promise 返回。有没有办法只返回一个值而不是一个 Promise 对象?

function TestPromise() {
  //someAsyncFunction returns a Promise.
  return someAsyncFunction();
}

//Assume valueFromPromise = 2;
//After the addition newValue becomes 3
//And we return 3 instead of 3 wrapped up in a Promise.

function someFunction() {
  return latestValue = TestPromise().then(valueFromPromise => {
     newValue = valueFromPromise + 1;
     return newValue;
  });
}
function main() {
  let value = someFunction();
  //Use value here to do something.
}

我知道我所要求的可以通过 async/await 来实现。但我想正确理解 Promise。

谢谢

最佳答案

这可能有助于了解幕后发生的事情。 Promise 实际上只是旧回调周围的语法糖。

function TestPromise() {
  //someAsyncFunction returns a Promise.
  return someAsyncFunction();
}

function someAsyncFunction() {
    return new Promise(function(resolve, reject) {
        fetchSomeValue()
            .then(function(someValue) {
                resolve(someValue);
            });
}

Promise 调用 resolve() 回调之前,无法获取该数据。 async/await 确实非常干净,我不确定你为什么要避免它。

function TestPromise() {
  //someAsyncFunction returns a Promise.
  return someAsyncFunction();
}

//Assume valueFromPromise = 2;
//After the addition newValue becomes 3
//And we return 3 instead of 3 wrapped up in a Promise.

async function someFunction() {
  const valueFromPromise = await TestPromise();
  return valueFromPromise + 1;
}

async function main() {
  let value = await someFunction();
  //Use value here to do something.
}

关于javascript - then() 是否可以返回一个值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50321121/

相关文章:

javascript - 在 Chrome 扩展创建的 iframe 中附加或执行脚本

javascript - 在 javascript 中访问方法内的属性

javascript - 使用 RxJS 对发出的值进行排队,就像可以使用 p-queue 一样

javascript - 从 Firebase 获取数据时,来自 Redux Toolkit 的 createAsyncThunk 会产生未定义的负载

javascript - 为什么将代码包装在resolved prop 中会使同步代码表现得像异步代码?

Javascript:在没有库的情况下按系列(或顺序)运行异步任务

javascript - Joi 嵌套模式和默认值

javascript - 使用 UI Router resolve 阻止 Angular Controller 加载

javascript - 反模式聚合错误并传递给 promise 解析 js?

javascript - this.setState 不是一个函数(尝试上传图像)ReactJs