小编Ric*_*lez的帖子

有了Promise,为什么浏览器会两次返回拒绝,但不会两次返回解析?

我在理解javaScript时遇到了麻烦promises。我写了以下代码:

var p = new Promise(function(resolve,reject){

    reject(Error("hello world"));
});

setTimeout(()=>p.catch(e=>console.log(e)),5000);
Run Code Online (Sandbox Code Playgroud)

我立即在Chrome开发者控制台中看到以下内容: 在此处输入图片说明

但是,等待5秒钟后,该消息会自动变为黑色,如下图所示: 在此处输入图片说明

我以前从未在javaScript代码和开发人员控制台之间看到过这种行为,在这里,我的javaScript代码可以在开发人员控制台中“修改现有内容”。

因此,我决定resolve通过编写以下代码来查看是否发生相同的情况:

var p = new Promise(function(resolve,reject){

    resolve("hello world");
});

setTimeout(()=>p.then(e=>console.log(e)),5000);
Run Code Online (Sandbox Code Playgroud)

但是在这种情况下,我的开发者控制台要等5秒钟后才显示任何内容,然后打印到hello world。

为什么在调用时将resolve和reject区别开来?


额外

我也写了这段代码:

var p = new Promise(function(resolve,reject){

    reject(Error("hello world"));
});

setTimeout(()=>p.catch(e=>console.log("errors",e)),5000);
setTimeout(()=>p.catch(e=>console.log("errors 2",e)),6000);
setTimeout(()=>p.catch(null),7000);
Run Code Online (Sandbox Code Playgroud)

这将导致多个输出到开发人员控制台。红色错误在时间0处出现,红色在5秒处变为带有文本的黑色errors hello world,然后在6秒钟处出现新的错误消息errors 2 hello world,然后在7秒钟处出现红色错误消息。现在我对一个reject实际被调用多少次感到非常困惑。...我迷路了...

javascript asynchronous promise

10
推荐指数
1
解决办法
137
查看次数

我需要帮助在Bot菜单中重新分配变量

我正在尝试为我的机器人构建一个设置菜单,服务器所有者可以使用该菜单来配置该机器人。所有者键入时将触发菜单=setup。我希望该机器人回复一些嵌入消息,询问用户问题,以便正确配置该机器人。

这是我的第一个Discord.js项目,因此我不了解语法,但尝试学习。=当机器人在服务器中实现时,我有一个名为prefix的常量变量分配给该变量。

Bot菜单上的第一个提示要求用户将更prefix改为所需的任何内容。我需要帮助来了解如何将我的原始常量变量重新分配给他们所请求的新前缀。

var PREFIX = '=';

bot.on('message', message=>{
    let args = message.content.substring(PREFIX.length).split(" ");

    switch(args[0]){
        case 'setup':
            const embed = new Discord.RichEmbed()
            .setTitle('Step 1 of 1')
            .setDescription('Set your Prefix')
            .setColor(0xF1C40F)
            message.channel.sendEmbed(embed);
            //I want the user to now enter their own PREFIX and have the
            //bot save their responce as the new PREFIX
        break;
    }
})
Run Code Online (Sandbox Code Playgroud)

我要发生的是,当用户键入所需的内容时prefix,机器人将重新分配prefix代码,并删除机器人问题,然后用户响应并开始提示下一个问题。

javascript bots discord discord.js

6
推荐指数
1
解决办法
81
查看次数

如何使用本地存储、react hooks 和 Context Provider 保持状态持久

我正在我的应用程序中实施身份验证,我遇到的问题是刷新时状态不持久,因此我被重定向回登录屏幕。如何使用 React Hooks 检查是否有authToken来local storage让我在刷新时保持登录状态。

这是我的受保护路由,用于检查身份验证令牌

<Route
    {...rest}
    render={
        props=>
            authTokens ? (
                <Component {...props}/>
            ) : (
                <Redirect
                    to ={
                        {
                            pathname: '/login',
                            state: {
                                from: props.location
                            }
                        }
                    }
                />
Run Code Online (Sandbox Code Playgroud)

这是我的登录页面功能

 function Login(props) {
const [isLoggedIn, setLoggedIn] = useState(false);
const [isError, setIsError] = useState(false);
const [firstName, setUserName] = useState("");
const [password, setPassword] = useState("");
const { setAuthTokens } = useAuth();

function postLogin() {
    axios.post("http://10.6.254.22:5000/userinformation/login", {
      firstName,
      password
    }).then(result => { …
Run Code Online (Sandbox Code Playgroud)

reactjs react-hooks use-effect

5
推荐指数
2
解决办法
5470
查看次数

是否可以定位类 div 中的最后一个元素?CSS

我知道如果它们使用相同的类或者它们是相同的元素,我可以定位最后一个元素。但我构建的方式是用户将在其中放入任何元素(请参阅随附的示例)。只是想知道现在还可以通过CSS调用吗?或者说 CSS 无法做到这一点?

.header p:last-of-type{
  color: red;
 }
Run Code Online (Sandbox Code Playgroud)
<div class="header">
  <h1>I am numbe one</h1>
  <h3>number two</h3>
  <p>something</p>
  <p>something</p>
  <button>last one - red</button>
</div>

<div class="header">
  <h1>I am numbe one</h1>
  <h3>number two</h3>
  <p>last one - red</p>
</div>

<div class="header">
  <p>number 1</p>
  <h1>something</h1>
  <h3>last one - red</h3>
</div>
Run Code Online (Sandbox Code Playgroud)

html javascript css css-selectors

3
推荐指数
1
解决办法
1921
查看次数