【发布时间】:2020-01-31 06:59:24
【问题描述】:
我读过 Async 函数隐式返回一个由返回解决的承诺。 有没有办法让 Async 函数返回该承诺,以便我们自己解决它?
我有一个用例,我调用一个 api,它接受一个将被异步调用的函数。
/**
*
* @param {Array} keys - list of keys to get values
*/
let getStorageValues = async (keys) => {
// chrome.storage.sync.get accepts second argument which is called asynchronously.
chrome.storage.sync.get(keys, (values) => {
if (values) {
return values;
} else {
return new Error('throw')
}
})
}
相反,我想要类似的东西
let getStorageValues = async (keys) => {
let AsyncPromise = Async Function Promise.
chrome.storage.sync.get(keys, (values) => {
if (values) {
AsyncPromise.resolve(values);
} else {
AsyncPromise.reject(new Error('throw'))
}
})
}
如果我可以访问 Async 函数返回的 Promise,我可以使用它来解析 chrome.storage.sync.get 中使用的 values 变量
【问题讨论】:
-
您需要添加更多解释。 那个异步函数在哪里?你在哪里称呼它?可能你不需要看到承诺。如果你更清楚地说明你的目的,我可以说更多。
-
Is there a way to get that promise returned by Async function通过调用该函数? -
chrome.storage.sync.get不返回承诺。你要么需要将它包装在一个 Promise 中并返回它,要么使用回调。只是把它放在一个异步函数中对你没有帮助。 -
您没有在函数中的任何地方使用
await。为什么要用async标记它?
标签: javascript