我正在尝试异步/等待功能.我有这样的代码模仿请求:
const getJSON = async () => {
const request = () => new Promise((resolve, reject) => (
setTimeout(() => resolve({ foo: 'bar'}), 2000)
));
const json = await request();
return json;
}
Run Code Online (Sandbox Code Playgroud)
当我以这种方式使用代码时
console.log(getJSON()); // returns Promise
Run Code Online (Sandbox Code Playgroud)
它返回一个Promise
但是当我调用这行代码时
getJSON().then(json => console.log(json)); // prints { foo: 'bar' }
Run Code Online (Sandbox Code Playgroud)
它按预期打印json
可以只使用像这样的代码console.log(getJSON())吗?我不明白什么?
我正在尝试在macOS Sierra(10.12.1)上安装mysql2 gem(0.4.5)并收到错误.我没有本地的mysql服务器,它是远程的.
这是错误日志:
checking for ruby/thread.h... yes
checking for rb_thread_call_without_gvl() in ruby/thread.h... yes
checking for rb_thread_blocking_region()... no
checking for rb_wait_for_single_fd()... yes
checking for rb_hash_dup()... yes
checking for rb_intern3()... yes
-----
Using mysql_config at /usr/local/bin/mysql_config
-----
checking for mysql.h... yes
checking for errmsg.h... yes
checking for mysqld_error.h... yes
-----
Don't know how to set rpath on your system, if MySQL libraries are not in path mysql2 may not load
-----
-----
Setting libpath to /usr/local/Cellar/mysql-connector-c/6.1.9/lib
-----
creating Makefile
To see …Run Code Online (Sandbox Code Playgroud) 我有一个非常简单的布局组件,它使用HeadNext.js 附带的组件:
import React from 'react';
import { Container } from 'semantic-ui-react';
import { Head } from 'next/head';
import Header from './Header';
const Layout = ({ children }) => (
<Container>
<Head>
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/semantic-ui/2.3.1/semantic.min.css" />
</Head>
<Header />
{children}
<h1>Footer</h1>
</Container>
);
export default Layout;
Run Code Online (Sandbox Code Playgroud)
这给了我一个错误:
Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: undefined. You likely forgot to export your component from the file it's defined …Run Code Online (Sandbox Code Playgroud) 这里有一个问题。
我有一个 Rails 项目。当我想清除数据库并用一些测试数据填充它时,我运行:
rake db:drop db:create db:migrate db:seed
Run Code Online (Sandbox Code Playgroud)
我有一个错误:
NoMethodError: undefined method login for #<User:0x007fecf46afe80>
当我单独运行时:
rake db:drop db:create db:migrate
rake db:seed
Run Code Online (Sandbox Code Playgroud)
一切顺利。
另外,我在db/seeds.rb中的所有操作都包含在ActiveRecord::Base.transaction块中。
我必须在db/seeds.rbUser.reset_column_information的顶部添加
rake db:drop db:create db:migrate db:seed
在职的。
我之前没有遇到同样的错误reset_column_information。有人知道为什么会发生这种情况吗?
PS:运行后,db/schema.rbrake db:drop db:create db:migrate中存在“缺失”列,我可以直接在 DB 中看到该列
我想知道以下两个版本的代码之间的区别。两个版本的作用相同。
1)这里仅使用计数器变量来获取当前值
const Counter = () => {
const [counter, setCounter] = useState(0);
return <button onClick={() => setCounter(counter + 1)}>{counter}</button>;
}
Run Code Online (Sandbox Code Playgroud)
2)这个版本传递一个函数给setCounter
const Counter = () => {
const [counter, setCounter] = useState(0);
return <button onClick={() => setCounter(c => c + 1)}>{counter}</button>;
}
Run Code Online (Sandbox Code Playgroud)
官方文档说:
如果新状态是使用先前状态计算的,则可以将函数传递给 setState。该函数将接收先前的值,并返回更新后的值。
那么第一个选项有什么问题呢?有一些陷阱吗?
javascript ×3
reactjs ×2
async-await ×1
asynchronous ×1
database ×1
mysql ×1
next.js ×1
promise ×1
react-hooks ×1
ruby ×1
sql ×1
transactions ×1