小编Gwa*_*r17的帖子

function.apply.bind如何在以下代码中工作?

所以我得到了一个[200,599]的数组从promise返回,并且spread内的回调函数被传递给Function.apply.bind,但现在我迷路了.如何将[200,599]的数组分成x和y?apply.bind究竟是如何工作的?

function getY(x) {
        return new Promise( function(resolve,reject){
            setTimeout( function(){
                resolve( (3 * x) - 1 );
            }, 100 );
        } );
    }

function foo(bar,baz) {
    var x = bar * baz;

    // return both promises
    return [
        Promise.resolve( x ),
        getY( x )
    ];
}

function spread(fn) {
    return Function.apply.bind( fn, null );
}

Promise.all(
    foo( 10, 20 )
)
.then(
    spread( function(x,y){
        console.log( x, y );    // 200 599
    } )
)
Run Code Online (Sandbox Code Playgroud)

javascript bind apply promise ecmascript-6

11
推荐指数
3
解决办法
1180
查看次数

无法在chrome(mac)中打开一些html文件

我无法通过终端,GUI或右键单击通过Sublime Text 3在浏览器中打开来打开一些HTML文件(我没有想到的模式).

打开文件的默认浏览器肯定是设置为Chrome.当我说要在浏览器中打开文件时,它会将我带到Chrome窗口,但实际上并没有打开我想要的文件.

我可以通过命令+ O和Firefox或Safari在Chrome中打开这些文件,方法是右键单击文件并在GUI中选择它们.

如果Chrome打算在我预期的时候打开文件,那就太棒了.我很感激任何帮助.

html macos google-chrome

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

反向代理服务器如何提高您的安全性?

我正在尝试了解为什么反向代理服务器很有用。我刚读...

安全性和匿名性 – 通过拦截发往后端服务器的请求,反向代理服务器可以保护他们的身份并作为抵御安全攻击的额外防御措施。它还确保无论您的局域网结构如何,都可以从单个记录定位器或 URL 访问多个服务器。 https://www.nginx.com/resources/glossary/reverse-proxy-server/

为什么隐藏后端服务器的身份会有帮助?难道不能像访问应用程序的任何普通客户端访问它们一样,通过反向代理服务器攻击它们吗?

security reverse-proxy

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

使用 pnpm 工作区时 Webpack 别名不起作用

我在使用 pnpm 工作区时遇到错误,因为它无法解析 React-dom。我认为这是因为我有一个别名来使用@hot-loader/react-dom 而不是react-dom。然而,当我不使用工作区时它就起作用了,这对我来说很奇怪。

在安装我的软件包之前,我尝试删除我的pnpm-lock.yaml和 node_modules 文件夹。我用来安装软件包的命令是:pnpm recursive i

我有 2 个包裹。一个称为前端,另一个称为后端。

我的错误信息:

/Users/mg/projects/FSP/node_modules/.pnpm/registry.npmjs.org/react-hot-loader/4.12.18_react-dom@16.12.0+react@16.12.0/node_modules/react-hot-loader/dist/react-hot-loader.development.js
Module not found: Error: Can't resolve 'react-dom' in '/Users/mg/projects/FSP/node_modules/.pnpm/registry.npmjs.org/react-hot-loader/4.12.18_react-dom@16.12.0+react@16.12.0/node_modules/react-hot-loader/dist'
Run Code Online (Sandbox Code Playgroud)

前端 webpack.config.dev.js (/Users/mg/projects/FSP/packages/front-end/webpack.config.dev.js) (别名位于底部)

import path from 'path';
import webpack from 'webpack';
import Dotenv from 'dotenv-webpack';
import HtmlWebpackPlugin from 'html-webpack-plugin';
import { CleanWebpackPlugin } from 'clean-webpack-plugin';

// const dotEnvDevelopment = dotenv.config({path: __dirname + '/.env.development'})

export default {
  entry: ['webpack-hot-middleware/client', './src/Index.js'],
  output: {
    path: path.resolve(__dirname, 'dist'),
    filename: 'bundle.js',
    publicPath: '/'
  },
  module: { …
Run Code Online (Sandbox Code Playgroud)

pnpm

8
推荐指数
0
解决办法
2727
查看次数

为什么这个字符串不可解析?

JSON.parse('["foo", "bar\\"]'); //Uncaught SyntaxError: Unexpected end of JSON input
Run Code Online (Sandbox Code Playgroud)

当我查看上面的代码时,一切看起来都是正确的.它是一个JSON字符串,我认为可以转换回包含字符串"foo"的数组,字符串"bar \",因为第一个反斜杠会转义第二个反斜杠.

那么为什么输入意外结束呢?我假设它与反斜杠有关,但我无法弄明白.

javascript parsing json escaping

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

无法在 Android 模拟器上使用 Firestore 模拟器访问 Cloud Firestore 后端

我的问题是我无法使用 Android 模拟器上的 firebase firestore 模拟器从客户端调用 firestore。我已经测试了多个 Android 模拟器。

我收到的错误表明该应用程序根本无法连接到 firestore,声称没有互联网连接。这是完整的消息:“@firebase/firestore:, Firestore (7.8.1): 无法访问 Cloud Firestore 后端。连接失败 1 次。最近的错误:FirebaseError: [code=unavailable]: 操作无法完成这“通常表示您的设备目前没有健康的互联网连接。客户端将在离线模式下运行,直到它能够成功连接到后端。”

这让我很困惑,因为我的应用程序与 iOS 上的 firebase firestore 模拟器一起工作。它仍然适用于 android 的 firebase 云函数模拟器(没关系。它从来没有使用过云函数)。如果重要的话,在生产中使用 firestore 时,该应用程序也可以在 iOS 和 Android 上正常运行。

我正在使用 Expo 管理的工作流创建 React Native 应用程序,因此我使用的是 firebase 的 Web SDK。这意味着我必须弹出才能切换到 react-native-firebase。

我也看过文档,我似乎按照那里的说明进行操作:https : //firebase.google.com/docs/emulator-suite/connect_firestore#web

我也遇到过这个问题,我不清楚它们是否相关。https://github.com/firebase/firebase-js-sdk/issues/2923如果是这样,我也不确定如何在保持世博会管理的工作流程的同时修复它。

这是我的 firebase 配置

firebaseConfig.js

import * as firebase from 'firebase';
// Optionally import the services that you want to use
//import "firebase/auth";
//import "firebase/database";
import …
Run Code Online (Sandbox Code Playgroud)

android firebase react-native expo google-cloud-firestore

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

沙箱环境返回 21003 状态代码以进行收据验证

当我使用沙箱测试应用内购买时,对沙箱 URL https://sandbox.itunes.apple.com/verifyReceipt的发布请求返回

 data: { environment: 'Sandbox', status: 21003 }
Run Code Online (Sandbox Code Playgroud)

21003状态码表示收据无法验证。https://developer.apple.com/documentation/appstorereceipts/status?language=objc

这是预期的吗?我假设我的测试收据将被视为对沙盒环境有效并返回状态 0。

testing in-app-purchase ios app-store-connect in-app-purchase-receipt

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

为什么展开元素不适合复制多维数组?

来自 mdn:传播语法

注意:通常 ES2015 中的扩展运算符在复制数组时会深入一层。因此,它们不适合复制多维数组。Object.assign() 和 Object spread 语法也是如此。请查看下面的示例以更好地理解。

var a = [[1], [2], [3]];
var b = [...a];
b.shift().shift(); // 1
// Now array b is: [[2], [3]]
Run Code Online (Sandbox Code Playgroud)

上述声明的要点是什么?上面的代码示例与您使用 .slice() 方法将 a 中的数组复制到 b 中的工作方式相同。我尝试在此处向数组添加另一个维度:https : //repl.it/HKOq/2并且事情仍然按预期工作。

那么为什么传播语法不适合复制多维数组呢?

我很感激任何帮助。

编辑:

阅读 estus 和 vol7ron 的答案帮助我弄清楚了。基本上,正如 estus 在技术上指出的那样,数组内部只有数组,而不是多维数组。

正如 vol7ron 所解释的,只有数组的第一级被复制,因此内存中的对象对于任何进一步的嵌套元素都保持不变。

我也错误地怀疑使用扩展语法应该与切片运算符的行为有任何不同

javascript arrays ecmascript-6 spread-syntax

4
推荐指数
2
解决办法
5040
查看次数

如果陈述成三元,则不能缩短

我正在尝试更多地习惯使用三元运算符而不是if/else语句.

下面发布的代码的第一个版本可行,但第二个版本给出了一条错误消息,说明它们不是参数最长的长度属性,但是因为我设置了一个空字符串的初始条件,长度应为0.

这是我的代码的两个版本.如果有人能弄清楚我做错了什么,那就太棒了.

工作代码w/if语句

function findLongestWord(str) {
  var strSplit = str.split(' ');
  var longestWord = strSplit.reduce(function(longest, currentWord) {
    if(currentWord.length > longest.length)
       return currentWord;
    else
       return longest;
  }, "");
  return longestWord;
}

console.log(findLongestWord("The quick brown fox jumped over the lazy dog"));
Run Code Online (Sandbox Code Playgroud)

代码w /三元语句不起作用

function findLongestWord(str) {
  var strSplit = str.split(' ');
  var longestWord = strSplit.reduce(function(longest, currentWord) {
    currentWord.length > longest.length ? currentWord : longest;
  }, "");
  return longestWord;
}

console.log(findLongestWord("The quick brown fox jumped over the lazy dog"));
Run Code Online (Sandbox Code Playgroud)

我的错误信息是:

currentWord.length> longest.length?currentWord:最长的; …

javascript if-statement ternary-operator

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

空字符串加上一个对象如何等于一个数字

v = {
toString: function () { return 'foo' },  
valueOf: function () { return 5 }
}
console.log('' + v); //5
console.log(v); // { [Number: 5] toString: [Function], valueOf: [Function] }
Run Code Online (Sandbox Code Playgroud)

为什么v对象的值为5?

javascript string object addition

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

第二个参数Object.create

我的期望是我用新的toString方法覆盖了Vehicle的toString方法.然而,这似乎不起作用,我不知道为什么.基于这篇文章看起来应该是https://strongloop.com/strongblog/an-introduction-to-javascript-es6-classes/(向下滚动到Class Extending)

function Vehicle(make, year) {
  this.make = make;
  this.year = year;
}

Vehicle.prototype.toString = function() {
  return this.make + ' ' + this.year;
};

var vehicle = new Vehicle('Toyota Corolla', 2009);

function Motorcycle(make, year) {
  Vehicle.apply(this, [make, year]);
}

Motorcycle.prototype = Object.create(Vehicle.prototype, {
  toString: function() {
    return 'Motorcycle ' + this.make + ' ' + this.year;
  }
});

Motorcycle.prototype.constructor = Motorcycle;

var motorcycle = new Motorcycle('harley', 2010);
console.log(motorcycle.toString()); //TypeError
Run Code Online (Sandbox Code Playgroud)

javascript class ecmascript-5

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

对于类python的实例,getattr查找失败

我正在做一个练习,你应该计算你的项目是多么优雅的分数.高帽给你2分,领结给你4分,单片眼镜给你5分.我已经在每个类实例上启动了一个包含这些项的字典,但是当我getattr用来检查项是否具有该属性时,它总是返回None.

class Classy(object):

    def __init__(self):
        self.items = []
        self.classyItems = {'tophat': 2, 'bowtie': 4, 'monocle': 5}

    def addItem(self, str):
      self.items.append(str)

    def getClassiness(self):
      classiness = 0
      for item in self.items:
        itemIsClassy = getattr(self.classyItems, item, None) # Why does this always return none?
        if itemIsClassy:
          classiness += itemIsClassy
        else:
          pass
      return classiness


# Test cases
me = Classy()

# Should be 0
print me.getClassiness()

me.addItem("tophat")
# Should be 2
print me.getClassiness() # I'm getting 0
Run Code Online (Sandbox Code Playgroud)

为什么getattr回国 …

python dictionary getattr python-2.7

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