如何获取[[PromiseValue]]并将其存储到局部变量中?

时间:2018-11-14 09:15:01

标签: javascript fetch es6-promise vimeo-api

有两个功能; function getThumbnail(url) {}function getVimeoData() {}

我正在使用fetch()处理HTTP的调用,以检索 Vimeo 中视频的缩略图的url oEmbed 用于获取包含thumbnail_url的视频的JSON数据。

功能如下:

async function getVimeoThumb(videoUrl) {
    return await fetch(videoUrl)
        .then(response => {
            if (response.status !== 200) {
                console.log('Error occurred while fetching thumbnail.');
                return null;
            }

            return response.json();
        })
        .then(data => {return data['thumbnail_url']})
        .catch(err => console.log(err.reason));
}

以上函数返回Promise,其值为[[PromiseValue]]: "{{thumbnail_url}}"。在以下函数中获取返回的Promise值:

function getThumbnailUrl() {
    let newUrl;

    ...

    getVimeoThumb(url).then(result => {console.log(result)})

    ...
}

上面的函数将控制台日志返回为{{thumbnail_url}}

因此,我的问题是,是否有任何变通办法将获取的值{{thumbnail_url}}存储在本地变量newUrl中?

2 个答案:

答案 0 :(得分:0)

您已经有一个局部变量(newUrl),因此在记录结果的位置只能将其保存在其中

function getThumbnailUrl() {
    let newUrl;

    ...

    getVimeoThumb(url).then(result => { newUrl = result; console.log(result) })

    ...
}

答案 1 :(得分:0)

@Nitich是正确的。但是,如果您要使用newUrl外,则可以尝试此操作。 newUrl将在全局范围内。

    let newUrl;
    function getThumbnailUrl() {

    ...

    getVimeoThumb(url).then(result => { newUrl = result; console.log(result) })

    ...
    }

或者干脆

    ...

    getVimeoThumb(url).then(result => { newUrl = result; return newUrl; })

    ...
    }
    let newUrl = getThumbnailUrl(videoUrl);

我希望这会有所帮助。