【问题标题】:Is it possible to set the value of promise to a object [duplicate]是否可以将promise的值设置为对象[重复]
【发布时间】:2021-11-13 05:39:21
【问题描述】:

所以我使用.then 尝试将promise 的值分配给对象,但我不能,现在我尝试了一个对我没有帮助的匿名异步函数。

import fetch from 'node-fetch'
import { setProps } from '../helpers/objectResponse.js';
if (!globalThis.fetch) {
    globalThis.fetch = fetch;
}

const wrapMe = (pokimon) => {
    let value;
    const getPokimon = async (pokimon) => {
    const data = await fetch(`https://pokeapi.co/api/v2/pokemon/${pokimon.toLowerCase()}`);
    const response = await data.json();
    return response
    }

    (async () => {
        const data = await getPokimon(pokimon);
        return value = data
    })
    return value

}```

【问题讨论】:

  • @zero298 我正在尝试将值作为字符串或对象返回我没有回调函数
  • "将 promise 的值赋给对象" - 哪个对象?你在哪里打电话wrapMe?不,您永远无法实现同步返回数据的方法。你所能做的就是回报一个承诺。在调用函数的位置处理。

标签: javascript node.js node-fetch


【解决方案1】:

wrapMe me 函数需要异步

【讨论】:

    【解决方案2】:

    你必须对 ajax 请求使用回调或承诺,你不能简单地调用 ajax 并获取它的返回值

    在不使用 await 的情况下返回 data.json(),因此您的承诺将返回给 getPokimon

    尝试这样做

    function getPokimon(pokimon) {
        return fetch(`https://pokeapi.co/api/v2/pokemon/${pokimon.toLowerCase()}`).then(r=>r.json())
    }
    
    getPokimon("ditto").then(r=>{
        console.log(r)
    })

    【讨论】:

      猜你喜欢
      • 2011-03-03
      • 2017-06-09
      • 1970-01-01
      • 1970-01-01
      • 2020-12-23
      • 1970-01-01
      • 1970-01-01
      • 2016-06-19
      • 2012-03-11
      相关资源
      最近更新 更多