当我试图用从故事中获得的返回值设置我的状态时,我会收到一个数组,其中充满了promise的状态和值。
(30) [Promise, Promise, Promise, Promise, Promise, Promise, Promise, Promise, Promise, Promise, Promise, Promise, Promise, Promise, Promise, Promise, Promise, Promise, Promise, Promise, Promise, Promise, Promise, Promise, Promise, Promise, Promise, Promise, Promise, Promise]
0: Promise
__proto__: Promise
[[PromiseStatus]]: "resolved"
[[PromiseValue]]: Object
从我的控制台图像。登录渲染
如何仅分配来自PromiseValue的数据?
import React, { Component } from "react";
import axios from "axios";
class News extends Component {
state = {
loading: true,
data: null
};
async componentDidMount() {
const ids = await axios.get(
'https://hacker-news.firebaseio.com/v0/beststories.json?print=pretty&orderBy="$key"&limitToFirst=30'
);
const stories = await ids.data.map(id => {
return axios.get(`https://hacker-news.firebaseio.com/v0/item/${id}.json`);
});
this.setState({ data: stories });
}
render() {
console.log(this.state.data);
const news = this.state.loading ? "Loading" : "News";
return <div>{news}</div>;
}
}
使用Promise.all获得单个Promise,该Promise在数组中的每个Promise都解析后,将用数组值解析:
const storyPromises = ids.data.map(id => {
return axios.get(`https://hacker-news.firebaseio.com/v0/item/${id}.json`);
});
const stories = await Promise.all( storyPromises );
this.setState({ data: stories });
问题内容: 我想使用这样的Promise来调用Google Maps Geocoding API: 当我调用函数请求时,我发现我得到了一个Promise而不是一个值: 为什么不答应。然后在返回值之前执行?我如何从这个承诺而不是另一个承诺中获得价值? 问题答案: 如果您依赖承诺来返回数据,则必须从函数中返回承诺。 一旦调用堆栈中的1个函数异步,那么要继续线性执行,所有要调用它的函数也必须异步。(异步
新的云功能和承诺。我尝试在不同的位置添加承诺,但仍然在日志中得到消息。第一,我不确定我应该在哪里添加承诺,第二,我是否应该什么也不回。在调用match(如果条件满足,则创建channel)之后,我不需要执行另一个函数。虽然触发onCreate会有多个用户,所以我想确保每次执行一个用户。 编辑1-我尝试将事务更改为使用await,这样它将只在事务之后更改UserLife节点。得到这两个警告。1)应在
web3.eth.getCode()方法返回指定以太坊地址处的代码。 调用: web3.eth.getCode(address [, defaultBlock] [, callback]) 参数: address:String - 要读取代码的地址 defaultBlock:Number|String - 可选,使用该参数覆盖web3.eth.defaultBlock属性值 callback:F
问题内容: 我看到一些具有以下构造的代码示例: 我有C ++背景,对我来说似乎是错误。这种结构的语义是什么?是否在堆栈或堆上分配了新点? 问题答案: Go执行指针转义分析。如果指针转义了本地堆栈(在这种情况下会这样做),则在堆上分配对象。如果它没有对本地函数进行转义,则编译器可以自由地在堆栈上分配它(尽管它不作任何保证;这取决于指针转义分析是否可以证明该指针在该函数中保持局部)。
问题内容: 我正在尝试编写一个函数(使用WebdriverJS lib),该函数遍历元素列表,检查名称并构建与该名称相对应的xpath定位器。我在这里简化了xpath定位器,所以不用注意。 我在这里面临的问题是:1)调用此函数返回未定义。据我了解,这是因为return语句不在其位置,而是:2)将其放置在同步代码通常可以正常工作的正确位置,不适用于异步承诺,因此调用此函数将返回相同的未定义,但是因为
我正在尝试访问秒napshot.data()返回的内容,但有一个问题,如下面的评论所述。我试图创建一个异步函数,但无济于事。知道出了什么问题吗?请查看2条评论。