小编ale*_*xcs的帖子

为什么我的Promise数组在调用Promise.all()之前运行?

我试图创建一个Promises数组,然后使用Promise.all()解决它们.我正在使用got,它返回了一个承诺.

我的代码有效,但我不完全理解.这里是:

const got = require('got');

const url = 'myUrl';
const params = ['param1', 'param2', 'param3'];

let promiseArray = [];
for (param of params) {
    promiseArray.push(got(url + param));
}

// Inspect the promises
for (promise of promiseArray) {
    console.log(JSON.stringify(promise));
    // Output: promise: {"_pending":true,"_canceled":false,"_promise":{}}
}

Promise.all(promiseArray).then((results) => {
     // Operate on results - works just fine
}).catch((e) => {
    // Error handling logic
});
Run Code Online (Sandbox Code Playgroud)

让我失望的是,当我将Promises添加到数组中时Promise被标记为"pending",这意味着它们已经启动了.

我认为他们应该处于不活跃状态promiseArray,并且Promise.all(promiseArray)会启动它们并解决它们.

这是否意味着我两次开始他们?

javascript promise got

10
推荐指数
2
解决办法
3141
查看次数

SPA 组件的逆向工程是否存在风险?

在典型的单页应用程序(SPA,例如:React)中,整个代码包都提供给客户端。这包括应用程序的私有组件,这些组件通常受到客户端授权机制的保护(例如,检查状态中是否设置了身份验证令牌)。

是否可以对这些私有组件进行逆向工程,并至少看到它们的骨架?

我知道数据仍然隐藏在 API 后面,因此对手除了组件的骨架之外看不到任何内容(代码中的任何内容,而不是远程数据:布局、复制文本、界面行为等)

相比之下,如果您未经正式授权,SSR 应用程序通常不会向您返回受保护 UI 的任何部分。

我知道这在大多数应用程序中都不是问题,但是在完全私有的应用程序(例如,没有公开注册的应用程序)中,这可能是一个问题吗?在这些应用程序中,界面可以为对手提供有价值的信息。

具有极端保密要求的团队是否曾将其视为取消资格的问题?(例如:军事或秘密初创公司)或者他们仍然可以使用 SPA 并采取一些额外措施吗?(例如:不要向受信任网络之外的用户提供应用程序)

security single-page-application reactjs

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

元类 Singleton 的 Python 类型

我有一个单例的 Python (3.8) 元类,如下所示

我尝试添加如下类型:

from typing import Dict, Any, TypeVar, Type

_T = TypeVar("_T", bound="Singleton")


class Singleton(type):
    _instances: Dict[Any, _T] = {}

    def __call__(cls: Type[_T], *args: Any, **kwargs: Any) -> _T:
        if cls not in cls._instances:
            cls._instances[cls] = super().__call__(*args, **kwargs)
        return cls._instances[cls]
Run Code Online (Sandbox Code Playgroud)

在行中:

_instances: Dict[Any, _T] = {}
Run Code Online (Sandbox Code Playgroud)

MyPy 警告:

Mypy: Type variable "utils.singleton._T" is unbound

我已经尝试了不同的迭代,但没有成功;我很难弄清楚如何输入这个字典。

此外,该行:

_instances: Dict[Any, _T] = {}
Run Code Online (Sandbox Code Playgroud)

生产:

Mypy: The erased type of self "Type[golf_ml.utils.singleton.Singleton]" is not a supertype of its class …

python metaclass mypy python-typing

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