const crypto = require('crypto');
async function getKey(byteSize) {
let key = await crypto.randomBytes(byteSize);
return key;
}
async function g() {
let key = await getKey(12);
return key;
}
console.log(g());
console.log('hello - want this called after g() above');
Run Code Online (Sandbox Code Playgroud)
我已经这样做了一个小时,但我不明白如何确保我使用 async/await 获得密钥。无论我做什么,我都会收到一个待处理的 Promise。
我也尝试过这个:
async function getKey(byteSize) {
let key = await crypto.randomBytes(byteSize);
return key;
}
getKey(12).then((result) => { console.log(result) })
console.log('hello');
Run Code Online (Sandbox Code Playgroud)
……没有用!其灵感来自: How to use wait with promisify for crypto.randomBytes?
谁能帮我这个?
我想做的就是获得 randomBytes 异步。使用 async./await 块,但在继续代码之前确保它履行承诺。
关于这个主题有很多问题,但我不确定我的正则表达式是否容易受到攻击。以下正则表达式是我用于电子邮件验证的正则表达式:
/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(email)
Run Code Online (Sandbox Code Playgroud)
因为我在一些地方使用了 *,所以我怀疑可能是这样。
我希望能够测试代码中出现的任意数量的问题。
我正在使用 Node.js,因此考虑到事件循环的单线程性质,这可能会完全关闭我的服务器。
我想存储一些信息。在 node.js 数组变量(作为本地缓存)中,我的中间件在进行数据库查询之前会检查该变量。
我知道我可以使用 redis 来完成此操作,并且它通常是首选方法 b/c redis 提供持久性快照并且性能相当高,但我无法想象有什么比存储在内存中的变量性能更高。
然而,每次有人提出这个话题时,人们都会说“内存泄漏”让这是一个坏主意。但为什么?为什么 Node.js 不擅长管理服务器端变量?
是否有通过 node.js 管理服务器端数组/缓存的首选方法(在外部 k/v 数据库存储之外)?
在下面的 line_items.items.price_data.product_data.images 数组中,我输入了两张图像,但只显示一张。有没有办法在结账页面上看到两张图片?
app.post('/create-checkout-session', async (req, res) => {
const domainURL = process.env.DOMAIN;
const { quantity, locale } = req.body;
const session = await stripe.checkout.sessions.create({
payment_method_types: process.env.PAYMENT_METHODS.split(', '),
mode: 'payment',
locale: locale,
line_items: [
{
// price: process.env.PRICE,
price_data: {
currency: 'usd',
unit_amount: 1000,
product_data: {
name: 'Product name ...',
images: [
'https://picsum.photos/280/320?random=4',
'https://picsum.photos/280/320?random=2',
],
},
},
quantity: quantity,
description: 'My description ...',
},
],
success_url: `${domainURL}/success.html?session_id={CHECKOUT_SESSION_ID}`,
cancel_url: `${domainURL}/canceled.html`,
});
res.send({
sessionId: session.id,
});
});
Run Code Online (Sandbox Code Playgroud)
Run Code Online (Sandbox Code Playgroud)line_items.price_data.product_data.images optional …
我遇到了这个答案,它似乎解决了这个问题:React何时重新渲染子组件?
但我在这里问一个更微妙的问题。为什么 React 在使用useMemo
hook 时(通常)会重新渲染子组件?
在下面的示例中,我希望Child
和Mchild
组件都不会在输入 onChange 事件上重新渲染,但只是Mchild
不会重新渲染。Child
每次按键时都会呈现。
有人能解释一下为什么 React 会这样做吗?我想我要问的是,我不明白为什么 React 默认不这样做。使用始终使用的子组件模式有什么缺点React.memo
?
import React, { useMemo, useState } from "react";
const Child = ({ person, which }: any) => {
console.log(`${which} render`);
return <div>{`From child component: ${person.first}`}</div>;
};
const Mchild = React.memo(Child);
function Parent() {
console.log("Parent render");
const [message, setMessage] = useState<string>("");
const person = { first: "gary", last: "johnson" };
const mPerson = useMemo(() => …
Run Code Online (Sandbox Code Playgroud) 我花费了比我愿意承认的更多的时间来尝试理解 RPC 和 Restful 端点之间的差异。事实上,在深入这个兔子洞之后,我什至不确定我是否完全理解 RPC 是什么了。我并不孤单。我看到无数的消息反复要求澄清。
到目前为止我的理解是:
RPC 和 Restful 端点本质上很大程度上只是概念性的。没有标准。
两者都是调用远程服务器上的函数的方法。
对于静态端点,我们将 HTTP 方法映射到资源上的 CRUD 操作。
对于 RPC,我们关心的是对象上的操作。
然而,在这两种情况下,我们都在解决远程方法调用。
我读过一些人说,宁静不应该是有状态的,如果是的话,那就不是宁静的。但是大多数宁静的端点不是通过会话使用状态吗?我的意思是,我不会让任何人在未登录的情况下删除数据。
我还读到像domain(.)com/login 这样的函数并不是安静的,因为它是一个动作。这似乎是有道理的,但由于我在服务器上编写的函数与简单的 Restful 函数没有任何不同,所以我们如何称呼它们(Restful 与 RPC)真的很重要吗?
我真的不明白我错过了什么,而且迄今为止 StackOverflow 上似乎还没有帖子可以解决这个困惑。
希望有人能够使用上述内容作为理解指南提供一些见解。提前致谢。
当我尝试使用“tsc file.ts”编译以下 TypeScript 时,出现以下错误(两次):
错误 TS1056:访问器仅在针对 ECMAScript 5 及更高版本时可用。
根据 StackOverflow 上的这篇文章 -访问器仅在针对 ECMAScript 5 及更高版本时可用- 我应该能够指定一个“tsconfig.json”文件,我已经这样做了:
{
"compilerOptions": {
"target": "ES5"
}
}
Run Code Online (Sandbox Code Playgroud)
export class CPoint {
constructor(private _x?: number, private _y?: number) {
};
public draw() {
console.log(`x: ${this._x} y: ${this._y}`);
}
public get x() {
return this._x;
}
public set x(value: number) {
if (value < 0) {
throw new Error('The value cannot be less than 0.');
}
this._x = value;
}
}
Run Code Online (Sandbox Code Playgroud)
我可以使用 --target …
过去两周我一直在学习以下内容:setImmediate、process.nextTick、setTimeout、promises、callbacks、libuv、事件循环、作业/微任务队列、事件循环队列、调用堆栈等。
我真的掉进了一个无法逃脱的兔子洞,虽然我发现自己有更多的见识,但我仍然无法掌握 JavaScript 中的异步代码。
我想采用以下基本场景并了解如何异步实现它:
// does nothing; here to simulate functionality below
var data = new Array(10000000);
const displayTime = desc => {
var time = new Date();
console.log(
("0" + time.getHours()).slice(-2) + ":" +
("0" + time.getMinutes()).slice(-2) + ":" +
("0" + time.getSeconds()).slice(-2) + " " + desc
);
}
displayTime('starting ...');
// --- async/await (a promise):
const processData = async(data) => {
let dataLen = data.length;
let processedData = [];
//console.time('#1');
for (let ctr = 0; ctr …
Run Code Online (Sandbox Code Playgroud)C++ 中的 Try/catch 块未被“捕获”。我正在尝试使用一个 catch 块来获取所有异常。
#include <iostream>
#include <exception>
using namespace std;
int main()
{
try
{
throw 1;
}
catch (exception& e)
{
cout << "ERROR: " << e.what() << endl;
return 1;
}
return 0;
}
Run Code Online (Sandbox Code Playgroud) node.js ×4
javascript ×3
c++ ×1
memcached ×1
reactjs ×1
redis ×1
regex ×1
rest ×1
rpc ×1
typescript ×1