首页 > 解决方案 > 返回值而不是没有等待的承诺

问题描述

由于父函数不支持异步。我需要在没有 await 和 get 的情况下拨打电话return value。正如大多数帖子所建议的那样,应用承诺then并返回值。但它打印为“承诺”而不是返回“价值”。

你能分享一下,如何实现返回值而不是承诺。

代码沙箱: https ://codesandbox.io/s/await-without-async-and-return-value-qbs7t?file=/src/index.js


await isEnable(data) {
  try {
    ...
    return true;
  }
  catch (e) {
    console.error(e);
  }
}
}

const getEnableStatus=(data) =>{
  return isEnable(data).then((result) =>
    {console.log(result); return result;});  //this prints correctly but, need this in return result.
}

console.log(getEnableStatus(data)); //it always print 'promise'. how to get value here instead of promise.

标签: javascriptasync-awaitpromisees6-promise

解决方案


将回调传递给getEnableStatus函数,然后使用返回的数据调用它。

// Mock function that resolves after
// two seconds
function isEnable() {
  return new Promise((res, rej) => {
    setTimeout(() => res('Hallo!'), 2000);
  });
}

// Accept a callback, and call it with the data
function getEnableStatus(data, callback) {
  isEnable(data).then(callback);
}

// The callback logs the data
getEnableStatus('data', function (data) {
  console.log(data);
});


推荐阅读