小编mic*_*ech的帖子

JavaScript fetch API - 为什么response.json()返回一个promise对象(而不是JSON)?

我刚刚开始学习Fetch API:https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch

这是我编写的代码片段,用来修补它:

fetch('http://swapi.co/api/people/1')
  .then(function(response) {
    var json = response.json();

    console.log(json);
    // Expected : { "name": "Luke Skywalker","height": "1.72 m", ... } 
    // Get : Promise {[[PromiseStatus]]: "pending", [[PromiseValue]]: undefined}
  }); 
Run Code Online (Sandbox Code Playgroud)

我本来希望从response.json()中获取一个JSON对象.

与使用JSON.parse()时获得的内容类似.

相反,我得到了一个承诺对象.

如果我扩大这里显示的承诺链......

return response.json().then(function(json) {
      // process your JSON further
});
Run Code Online (Sandbox Code Playgroud)

...然后它工作:在以下承诺的then方法中,它显示为json.

为什么我不能在第一个promise的then()中检索JSON数据?

谁能请解释这里发生了什么?

我真的很感激.

javascript json asynchronous

17
推荐指数
1
解决办法
2万
查看次数

在添加或删除之前检查classList是否包含类?

我的一位同事坚持认为,在添加或删除元素之前,首先检查元素是否存在是很重要的.

因此他的代码中有很多构造,如下所示:

if (element.classList.contains('info')) {
    element.classList.remove('info');
}

if (!element.classList.contains('hint')) {
    element.classList.add('hint');
}
Run Code Online (Sandbox Code Playgroud)

我个人猜测如果用.contains()退出支票就不会发生任何事情.

应该是指:

如果班级没有,那么什么都没有删除.这句话毫无意义.

如果班级已经在那里,则不会添加任何内容.

我的同事是否对他坚持支票是正确的,因为不检查可能会导致一些麻烦?

或者我可以忘记检查?

javascript

9
推荐指数
2
解决办法
7017
查看次数

JavaScript addEventListener:'input'与'keyup'

当我想在插入后立即获得文本输入的值时,我使用'keyup'事件.

现在我在CodeReview问题中看到事件"输入"的用法是为了实现相同的目的.

CodeReview问题(第5行): https ://codereview.stackexchange.com/questions/141937/registration-form-validation-in-jquery

我有点修饰了.做了这个演示:

var box = document.querySelector('input');

box.addEventListener('keyup', function() {
  console.log('keyup: %s', this.value);
});

box.addEventListener('input', function() {
  console.log('input: %s', this.value);
});

/* RESULT
  input: a
  keyup: a
  input: ab
  keyup: ab
  input: abc
  keyup: abc
*/
Run Code Online (Sandbox Code Playgroud)
<input type="text" />
Run Code Online (Sandbox Code Playgroud)

可以看出:没有区别!

因此我的问题是:

keyup-event和input-event(用于读取文本输入的值)的用法是否有区别?

和:

是否有人应该选择一个而不是另一个?

javascript

7
推荐指数
1
解决办法
6578
查看次数

OPA5:如何确保每个测试都在新环境中开始?

我必须重构一个OPA5测试模块,因为目前大多数测试用例都失败了.在试图找到失败的原因时,我发现大多数测试都没有错误.

当你单独运行它们时,它们只能找到它.当您将它们作为模块运行时,会出现问题.表示您将它们作为一个组运行.一个接一个的测试.

一个测试失败时,会出现问题.通常你执行iTeardownMyAppFrame()作为 了最后的测试方法.用于删除使用过的iFrame.以便以下测试找到可以运行的未受影响的环境.

现在,当测试在某一行失败时,测试将停止,并且不会执行以下调用. iTeardownMyAppFrame永远不会执行,并且在先前(失败的)测试的环境中开始以下测试.所以它也可能失败,因为环境不如预期.

有没有办法确保每个测试都在新的iFrame中开始?

iTeardownMyAppFrame在finally块中使用"try-finally"之类的东西.所以它在任何情况下都会被执行.无论测试是否有效或失败.

sapui5

7
推荐指数
0
解决办法
141
查看次数

JavaScript:扩充类型 - "返回此"的目的

我正在阅读JavaScript - The Good Parts目前.所以我正在处理类型的扩充.我理解动机和实施.但是,如果我看一下代码......

Function.prototype.method = function(ident, funct) {
    this.prototype[ident] = funct;
    return this; // No idea. For what?
};
Run Code Online (Sandbox Code Playgroud)

...然后我不明白返回的目的.我把评论归来了.这没有效果.无论如何它都起作用了.

我的完整代码:

Function.prototype.method = function(ident, funct) {
    this.prototype[ident] = funct;
    return this;
};

Date.method('sayHello', function() {
    alert(new Date().toString());
});

var myDate = new Date();

myDate.sayHello();
Run Code Online (Sandbox Code Playgroud)

它是什么意思?

javascript

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

什么是Java中的“运行时类”?

我试图了解该Object.getClass()方法的作用。

文档说,它“返回对象的运行时类”。这种解释并不能帮助我理解该术语。

是否有人对“运行时类”是什么以及getClass()它是什么做了简单的描述?

java oop

6
推荐指数
2
解决办法
3791
查看次数

CSS border-image:仅用指定的背景图像填充角落。为什么?

我想使用CSS属性“border-image”:https://developer.mozilla.org/de/docs/Web/CSS/border-image

但由于某种原因它只填充了元素的四个角:

我在电脑上看到的内容

我的代码:

.wrap {
  width: 400px;
  height: 300px;
  margin: 50px auto;
  position: relative;
}

.item {
  width: 100px;
  height: 100px;
  background-color: lightGray;
  border: 50px solid transparent;
  border-image: url(http://lorempixel.com/50/50/) 50 50 50 50 stretch stretch;
}
Run Code Online (Sandbox Code Playgroud)
<div class="wrap">
  <div class="item"></div>
</div>
Run Code Online (Sandbox Code Playgroud)

我有什么错吗?

我希望这个小图像能够在垂直和水平方向上重复。

这样灰色框就被图像图案包围起来了。

非常感谢任何帮助。

html css border border-image

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

努力理解 Python 需要虚拟环境的原因

来自 JavaScript 我熟悉 NPM。

您可以在那里全局(通过使用 -g 标志)或在项目中本地安装包。在 Python 中,他们有这些虚拟环境。我仍然有点不确定为什么需要它们。我知道这是为了在一台机器上拥有不同版本的相同包。

是因为 Python 没有本地项目安装的概念吗?

所有包安装都是全局安装的,没有办法解决这个问题。在我看来就是这样...... 所以他们有虚拟环境吗?

我是对的?

python

6
推荐指数
2
解决办法
310
查看次数

无休止地向后移动数组

我必须能够前后移动数组。无休止地并且不会使索引越界异常。

为了继续前进,我知道使用模运算符的一种优雅方式。对于向后移动,我不得不自己想办法。

这是我的解决方案:

const inc = document.getElementById("inc");
const dec = document.getElementById("dec");
const arr = ["One", "Two", "Three", "Four", "Five", "Six"];
let i = 0;

inc.addEventListener("click", () => {
  i = (i + 1) % arr.length;

  console.log(arr[i]);
});

dec.addEventListener("click", () => {
  i = i - 1;

  if (i === -1) {
    i = arr.length - 1;
  }

  console.log(arr[i]);
});
Run Code Online (Sandbox Code Playgroud)
<!DOCTYPE html>
<html>

<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>JS Bin</title>
</head>

<body>
  <button id="inc">Inc</button>
  <button id="dec">Dec</button>
</body>

</html>
Run Code Online (Sandbox Code Playgroud)

有用。但是有没有更优雅的后退解决方案? …

javascript arrays algorithm

6
推荐指数
2
解决办法
100
查看次数

使用主构造函数时的 Kotlin getter / setter

该示例来自我正在做的 Kotlin 课程:

class Car {
    var speed: Int = 0
        get() = field 
        set(value) {
            field = value
        }
}
Run Code Online (Sandbox Code Playgroud)

如果我喜欢使用这样的主构造函数:

class Car(var speed: Int)
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我将如何编写 getter/setter?

kotlin

6
推荐指数
2
解决办法
3752
查看次数

标签 统计

javascript ×5

algorithm ×1

arrays ×1

asynchronous ×1

border ×1

border-image ×1

css ×1

html ×1

java ×1

json ×1

kotlin ×1

oop ×1

python ×1

sapui5 ×1