我读过,当您从 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/