Javascript Promises:获取 .then 检索 [[PromiseValue]]

我正在尝试检索[[PromiseValue]]Promise 的。我的函数当前返回一个 Promise,而我想要myFunction返回的值是存储在[[PromiseValue]]返回的 Promise 中的值。


这将返回一个 Promise。


myFunction(){

    return fetch("/api")

        .then(res => {

            return res.json();

        })

        .then(json => {

            return json;

        })

}

我试过这段代码,但是当我在控制台中打印数据时,它打印出正确的值,但返回的值是未定义的。


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

        })

}

我如何让我的函数返回存储在[[PromiseValue]]字符串中的值?请帮帮我,谢谢!


HUH函数
浏览 98回答 1
1回答

开满天机

您的函数不能PromiseValue直接返回,因为fetch异步工作。它将返回一个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();(注意:这个片段需要一个支持顶级的现代引擎await。最新的 chrome 可以正常工作。)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript