小编FZs*_*FZs的帖子

等待在没有 setTimeout 的情况下定义值?

我正在从某个地方获取一个值并希望在本地使用它(使用 lodash):

const setting = _.get(this.settings, 'options');
Run Code Online (Sandbox Code Playgroud)

this.settings.options设置在其他地方,取决于环境,this.settings.options可能未定义。在这种情况下,我可以执行以下操作:

const set = (setting) => {
  ...
  ...
};

const getThing = () => {
  setTimeout(() => {
    const setting = _.get(this.settings, 'options');
    return setting ? set(setting) : getThing();
  }, 1000);
};

getThing();
Run Code Online (Sandbox Code Playgroud)

这使用一个setTimeout函数来等待 1 秒this.settings.options以在该时间内设置,如果尚未设置,则该setTimeout函数会在 1 秒后调用自身进行检查。之后,它继续set()使用获取的数据执行该功能。这似乎每次都有效,但如果我能一直检查这个值直到它在没有计时器的情况下被定义,那就太好了。我不确定这是否可能?

我一直在尝试实现 promise 或使用 async / await 来执行此操作,但是我看到的示例似乎也使用了setTimeouts,并且解决方案最终看起来更复杂。其中,我主要是在看这个答案。无论如何,我在使用 async/await 执行此操作时遇到了麻烦,因此必须继续进行故障排除。

有没有办法在不使用 asetTimeout或 的情况下等待定义此值setInterval

javascript async-await ecmascript-6 es6-promise

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

如何在确保前一个函数完成的情况下以固定间隔调用函数

我有一个基于 Promise 的函数,我想以固定的时间间隔调用它,可以说每 60 秒一次。但我也想确保只有在先前调用的函数完全执行时才调用该函数,并且我想无限期地继续执行此操作

function fun(){
    return new Promise((resolve,reject)=>{
        //Some database queries which may or may not complete in 60 seconds
        resolve("done")
    })
}

setInterval(()=>{
    fun().then(d=>{
        console.log(d)
    })
},60000)
Run Code Online (Sandbox Code Playgroud)

上面的代码不会检查之前调用的函数是否完成。但我想确保

javascript setinterval node.js promise async-await

5
推荐指数
1
解决办法
480
查看次数

画布上的画线点缀着

我试图在彩虹笔画画布上工作,但每当我画画时,线条都会出现点缀.只有当我移动得非常慢时才能正常显示.

'mousemove'事件监听器,实际上无法检测到快速更改,或者我的代码中是否存在其他问题?此外,这里是codepen链接,如果有人想要一个工作程序.

这是codepen!

const canvas = document.querySelector('#draw');
canvas.width = window.innerWidth;
canvas.height = window.innerHeight;
var ctx = canvas.getContext("2d");
ctx.lineWidth = 50;
ctx.lineCap = "round";
ctx.lineJoin = "line";
ctx.strokeStyle = 0;
let hue = 0;
var [x, y] = [0, 0];
let paint = false;

canvas.addEventListener('mousedown', beginDraw);

function beginDraw(e) {
  paint = true;
  [x, y] = [e.x, e.y];
  // ctx.moveTo(x, y);
}

canvas.addEventListener('mousemove', draw);

function draw(e) {
  if (paint == false)
    return;
  ctx.strokeStyle = `hsla(${hue}, 100%, 50%, 0.5)`;
  ctx.beginPath();
  ctx.moveTo(x, y);
  ctx.lineTo(e.x, …
Run Code Online (Sandbox Code Playgroud)

javascript

5
推荐指数
1
解决办法
74
查看次数

如何在Javascript中悬停时更改对象的颜色?

我是Javascript/Canvas的新手,我想创建一个动画,只要我在画布中单击就会创建圆圈,然后当我将鼠标悬停在它们上面时它会改变颜色,当鼠标悬停在它们上面时它会恢复原始颜色.我能够在点击时创建绘制圆圈的动画,但无法使悬停颜色起作用.我正在尝试使用Javascript完全完成此操作,仅使用HTML来创建画布.任何建议都很感激!

    let dots = [];

    /** @type {HTMLCanvasElement} */
    let canvas = ( /** @type {HTMLCanvasElement} */ document.getElementById("canvas"));
    let context = canvas.getContext('2d');

    //some state
    let mouseX = -10;
    let mouseY = -10;

    //remember mouse click position
    canvas.onclick = function (event) {
        mouseX = event.clientX;
        mouseY = event.clientY;

        let box = (event.target).getBoundingClientRect();
        mouseX -= box.left;
        mouseY -= box.top;
    };

    canvas.onmouseleave = function () {
        mouseX = -10;
        mouseY = -10;
    };

    var drawCirc = function (hover) {
        //clear the canvas
        context.clearRect(0, …
Run Code Online (Sandbox Code Playgroud)

javascript canvas

5
推荐指数
1
解决办法
376
查看次数

<span> 可以做成可点击的链接吗?

将跨度变成可点击的链接。

我制作了一个仅包含背景图像(作为 Gilder/Levin 图像替换技术的一部分)的跨度到一个可点击的链接中,它似乎工作正常——但是,到目前为止,这仅在我自己的台式计算机上,在 Chrome、Opera 和 IE 11 上。

这是可行的吗?

<div id="logo">
  <a href="[absolute url]"> 
    <span></span>
  </a>
  <h1>page name</h1>
</div>
Run Code Online (Sandbox Code Playgroud)

它可以在我的电脑上使用 Chrome、IE11 和 Opera。它会普遍适用吗?

html css

5
推荐指数
1
解决办法
4418
查看次数

如何检查浏览器是否支持“let”?

let检查浏览器是否支持声明仅对当前代码块有效的变量的命令的最佳方法是什么?

这不是问题“目前哪些浏览器支持 JavaScript 的‘let’关键字?”的重复。因为问题涉及FF中的非标准语法扩展,并且eval/Function解决方案没有发布。

我需要执行此检查以将使用旧浏览器的用户重定向到建议他们更新浏览器的网站。

html javascript

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

javascript 对象引用无法按预期工作

谁能解释一下下面这段代码中发生了什么?为什么会这样呢?我预计变量a也会改变......

var base = {
  cars: {
    color: "blue",
    brand: "Ford"
  }
}

var a = base.cars;
base.cars = function () { console.log("example method") }

console.log(base) // changed to method
console.log(a) // still is object - why?
Run Code Online (Sandbox Code Playgroud)

javascript reference object

5
推荐指数
1
解决办法
571
查看次数

import { useState } from 'react'` 是否属于解构?

我想澄清一件事。

在React中,我们经常使用import {useState, useEffect} from 'react'.

我们可以将其视为 ES6 中的解构功能吗?

javascript destructuring ecmascript-6 es6-modules

5
推荐指数
1
解决办法
1484
查看次数

JavaScript 密码生成器有时不包括字符选择?

你好堆栈溢出!

这是我第一次在网站上发帖,所以请直接告诉我和我的问题。我的班级的任务是使用 JavaScript 单独创建一个密码生成器。值得庆幸的是,我已经让大部分应用程序正常运行,但我遇到了一个问题。

示例: 用户选择在密码中包含 8 个字符,并选择包含特殊字符、小写字符和大写字符。生成密码时有时不会包含所有字符选择。(有时它会生成包含特殊字符和大写字符的密码,但不包含单个小写字符)。

我已经完成这项作业一分钟了,但我的目标是了解我可以做些什么来解决这个问题并无论如何完成这个应用程序。我正在考虑可能删除passwordOptions对象并将每个选项变成它们自己的数组,你有什么想法?

非常感谢您的任何建议!:D

// passwordOptions contains all necessary string data needed to generate the password
const passwordOptions = {
  num: "1234567890",
  specialChar: "!@#$%&'()*+,^-./:;<=>?[]_`{~}|",
  lowerCase: "abcdefghijklmnopqrstuvwxyz",
  upperCase: "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
};

document.getElementById('generate').addEventListener('click', function() {
  alert(generatePassword());
});

// Executes when button is clicked
let generatePassword = function() {

  // initial state for password information
  let passInfo = "";

  // ask user for the length of their password
  let characterAmount = window.prompt("Enter the amount of characters you want …
Run Code Online (Sandbox Code Playgroud)

javascript password-generator

5
推荐指数
1
解决办法
2309
查看次数

为什么我的箭头函数返回“未定义”?

此问题旨在作为有关由于将单行/表达式箭头函数体语法与自动返回与其多行/块版本混淆而产生的问题的规范重复目标。


我有一个箭头函数来添加两个数字,但是当我调用它时,它返回undefined。为什么?

const add = (a, b) => {
  a + b
}

console.log(add(1, 2)) // expected: 3, actually: undefined
Run Code Online (Sandbox Code Playgroud)

替代问题:

我的 React 组件应该使用 渲染列表项map,但列表仍为空。为什么?

<ul>
  {list.map(item => {
    <li>
      <a href="{item.url}">{item.name}</a>
    </li>
  })}
</ul>
Run Code Online (Sandbox Code Playgroud)

javascript arrow-functions

5
推荐指数
1
解决办法
618
查看次数