Javascript 承诺:获取。然后检索 [[PromiseValue]]
Javascript Promises: fetch .then retrieving [[PromiseValue]]
我正在尝试检索 Promise 的 [[PromiseValue]]
。
我的函数目前 return 是一个 Promise,而我想要 myFunction
到 return 的值是存储在 returned Promise 的 [[PromiseValue]]
中的值。
这return是一个承诺。
myFunction(){
return fetch("/api")
.then(res => {
return res.json();
})
.then(json => {
return json;
})
}
我尝试了这段代码,但是当我在控制台中打印数据时,它打印了正确的值,但是 returned 值未定义。
myFunction(){
return fetch("/api")
.then(res => {
return res.json();
})
.then(json => {
return json;
})
.then(data => {
const stringData = data.toString();
console.log(stringData); // prints the correct string
return stringData; // returns undefined
})
}
如何使函数 return 中存储的值作为字符串存储在 [[PromiseValue]]
中?
请帮帮我,谢谢!
您的函数不能直接 return PromiseValue
,因为 fetch
是异步工作的。它将 return 一个 Promise 最终解析为该值。
使用async/await,你可以做的是:
async function myFunction() {
const res = await fetch('/api');
const json = await res.json();
return JSON.stringify(json);
// json.toString() is a bit weird … but do as you please
// I'd return the json and parse it at the callsite.
}
const result = await myFunction();
(注意:此代码段需要支持 top-level await
的现代引擎。最新的 chrome 可以正常工作。)
我正在尝试检索 Promise 的 [[PromiseValue]]
。
我的函数目前 return 是一个 Promise,而我想要 myFunction
到 return 的值是存储在 returned Promise 的 [[PromiseValue]]
中的值。
这return是一个承诺。
myFunction(){
return fetch("/api")
.then(res => {
return res.json();
})
.then(json => {
return json;
})
}
我尝试了这段代码,但是当我在控制台中打印数据时,它打印了正确的值,但是 returned 值未定义。
myFunction(){
return fetch("/api")
.then(res => {
return res.json();
})
.then(json => {
return json;
})
.then(data => {
const stringData = data.toString();
console.log(stringData); // prints the correct string
return stringData; // returns undefined
})
}
如何使函数 return 中存储的值作为字符串存储在 [[PromiseValue]]
中?
请帮帮我,谢谢!
您的函数不能直接 return PromiseValue
,因为 fetch
是异步工作的。它将 return 一个 Promise 最终解析为该值。
使用async/await,你可以做的是:
async function myFunction() {
const res = await fetch('/api');
const json = await res.json();
return JSON.stringify(json);
// json.toString() is a bit weird … but do as you please
// I'd return the json and parse it at the callsite.
}
const result = await myFunction();
(注意:此代码段需要支持 top-level await
的现代引擎。最新的 chrome 可以正常工作。)