小编Fel*_*ing的帖子

如何从异步调用返回响应?

我有一个foo发出Ajax请求的函数.我怎样才能从中回复foo

我尝试从success回调中返回值,并将响应分配给函数内部的局部变量并返回该变量,但这些方法都没有实际返回响应.

function foo() {
    var result;

    $.ajax({
        url: '...',
        success: function(response) {
            result = response;
            // return response; // <- I tried that one as well
        }
    });

    return result;
}

var result = foo(); // It always ends up being `undefined`.
Run Code Online (Sandbox Code Playgroud)

javascript ajax jquery asynchronous xmlhttprequest

5208
推荐指数
38
解决办法
134万
查看次数

如何在回调中访问正确的`this`?

我有一个构造函数,它注册一个事件处理程序:

function MyConstructor(data, transport) {
    this.data = data;
    transport.on('data', function () {
        alert(this.data);
    });
}

// Mock transport object
var transport = {
    on: function(event, callback) {
        setTimeout(callback, 1000);
    }
};

// called as
var obj = new MyConstructor('foo', transport);
Run Code Online (Sandbox Code Playgroud)

但是,我无法data在回调中访问已创建对象的属性.它看起来this并不是指创建的对象,而是指另一个对象.

我还尝试使用对象方法而不是匿名函数:

function MyConstructor(data, transport) {
    this.data = data;
    transport.on('data', this.alert);
}

MyConstructor.prototype.alert = function() {
    alert(this.name);
};
Run Code Online (Sandbox Code Playgroud)

但它表现出同样的问题.

如何访问正确的对象?

javascript callback this

1309
推荐指数
12
解决办法
36万
查看次数

访问/处理(嵌套)对象,数组或JSON

我有一个包含对象和数组的嵌套数据结构.如何提取信息,即访问特定或多个值(或键)?

例如:

var data = {
    code: 42,
    items: [{
        id: 1,
        name: 'foo'
    }, {
        id: 2,
        name: 'bar'
    }]
};
Run Code Online (Sandbox Code Playgroud)

我怎么能访问name第二项items

javascript arrays nested object data-manipulation

811
推荐指数
24
解决办法
57万
查看次数

箭头函数与函数声明/表达式:它们是等效/可交换的吗?

规范问题如果在用箭头函数替换函数声明/表达式后发现有关问题的问题,请将其作为此副本的副本关闭.

ES2015中的箭头功能提供了更简洁的语法.我现在可以用箭头功能替换所有函数声明/表达式吗?我需要注意什么?

例子:

构造函数

function User(name) {
  this.name = name;
}

// vs

const User = name => {
  this.name = name;
};
Run Code Online (Sandbox Code Playgroud)

原型方法

User.prototype.getName = function() {
  return this.name;
};

// vs

User.prototype.getName = () => this.name;
Run Code Online (Sandbox Code Playgroud)

对象(文字)方法

const obj = {
  getName: function() {
    // ...
  }
};

// vs

const obj = {
  getName: () => {
    // ...
  }
};
Run Code Online (Sandbox Code Playgroud)

回调

setTimeout(function() {
  // ...
}, 500);

// vs

setTimeout(() => {
  // ...
}, …
Run Code Online (Sandbox Code Playgroud)

javascript ecmascript-6 arrow-functions

449
推荐指数
2
解决办法
12万
查看次数

为什么jQuery或像getElementById这样的DOM方法找不到元素?

可能的原因是什么document.getElementById,$("#id")或者任何其他DOM方法/ jQuery选择器没有找到元素?

示例问题包括:

  • jQuery默默地无法绑定事件处理程序
  • jQuery的"吸气"方法(.val(),.html(),.text())返回undefined
  • 返回的标准DOM方法null导致以下任何错误:

    未捕获的TypeError:无法设置null的属性'...'未捕获的TypeError:无法读取null的属性'...'

    最常见的形式是:

    未捕获的TypeError:无法设置null的属性'onclick'

    未捕获的TypeError:无法读取null的属性"addEventListener"

    未捕获的TypeError:无法读取null的属性'style'

javascript jquery dom

446
推荐指数
6
解决办法
11万
查看次数

获取JavaScript对象键列表

我有一个像JavaScript的对象

var obj = {
   key1: 'value1',
   key2: 'value2',
   key3: 'value3',
   key4: 'value4'
}
Run Code Online (Sandbox Code Playgroud)

如何获取此对象中的长度和键列表?

javascript

288
推荐指数
4
解决办法
34万
查看次数

撤消git藏匿

我只是在一个我没有提交的项目中藏匿.在我被藏起之前有没有办法回到州?我怎么能这样做?我关闭了终端,我的笔记本电脑关机了.我做了一些研究,似乎没有办法做到这一点.

git

276
推荐指数
3
解决办法
22万
查看次数

在动作创建者中访问Redux状态?

说我有以下内容:

export const SOME_ACTION = 'SOME_ACTION';
export function someAction() {
  return {
    type: SOME_ACTION,
  }
}
Run Code Online (Sandbox Code Playgroud)

在该动作创建者中,我想访问全局存储状态(所有reducers).这样做更好:

import store from '../store';

export const SOME_ACTION = 'SOME_ACTION';
export function someAction() {
  return {
    type: SOME_ACTION,
    items: store.getState().otherReducer.items,
  }
}
Run Code Online (Sandbox Code Playgroud)

或这个:

export const SOME_ACTION = 'SOME_ACTION';
export function someAction() {
  return (dispatch, getState) => {
    const {items} = getState().otherReducer;

    dispatch(anotherAction(items));
  }
}
Run Code Online (Sandbox Code Playgroud)

javascript redux

263
推荐指数
3
解决办法
12万
查看次数

具有id的CreateElement?

我正在尝试修改此代码,以便为此div项目提供ID,但是我在google上找不到任何内容,而idName不起作用.我读了一些关于追加的内容,但对于看似非常简单的任务而言似乎相当复杂,那么还有其他选择吗?谢谢 :)

g=document.createElement('div'); g.className='tclose'; g.v=0;
Run Code Online (Sandbox Code Playgroud)

javascript jquery

257
推荐指数
7
解决办法
36万
查看次数

如何在async/await语法中拒绝?

如何拒绝async/await函数返回的promise?

例如,最初

foo(id: string): Promise<A> {
  return new Promise((resolve, reject) => {
    someAsyncPromise().then((value)=>resolve(200)).catch((err)=>reject(400))
  });
}
Run Code Online (Sandbox Code Playgroud)

转换为async/await

async foo(id: string): Promise<A> {
  try{
    await someAsyncPromise();
    return 200;
  } catch(error) {//here goes if someAsyncPromise() rejected}
    return 400; //this will result in a resolved promise.
  });
}
Run Code Online (Sandbox Code Playgroud)

那么,在这种情况下,我怎么能正确地拒绝这个承诺呢?

javascript asynchronous typescript es6-promise ecmascript-2017

234
推荐指数
6
解决办法
10万
查看次数