我正在测试返回数组数组的Javascript函数,以查看返回的数组是否包含与包含预期输出的数组相同的元素:
expect(myArray).toEqual(expectedArray);
Run Code Online (Sandbox Code Playgroud)
如果myArray和expectedArray只包含整数,则可以完美地工作,但如果由于浮点精度错误而至少存在一个浮点数,则会失败.toBeCloseTo似乎没有在数组上运行.
目前我正在做一个循环来做成员检查:
for (var i = 0; i < myArray.length; i++) {
expect(myArray[i]).toBeCloseTo(expectedArray[i]);
}
Run Code Online (Sandbox Code Playgroud)
......但是有更清洁的方法吗?如果出于某种原因测试失败,则输出是臃肿具有可怕的错误消息的量.
我在TypeScript中有以下小类,其中一些公共字段被装饰:
class Company {
@dataMember
public name: string;
@dataMember
public people: Person[];
}
class Person {
// ...
}
Run Code Online (Sandbox Code Playgroud)
通过使用反射元数据,我可以确定公司属性名称和人员的类型:它们分别是构造函数String和Array,它们是预期的和逻辑的.
我的属性装饰函数:
function decorate(target: Object, propertyKey: string | symbol): void {
var reflectType = Reflect.getMetadata("design:type", target, propertyKey);
// ...
}
Run Code Online (Sandbox Code Playgroud)
但是我如何确定数组元素的类型(构造函数)?它甚至可能吗?在上面的例子中,它应该是(引用)Person.
注意:我在实例化之前需要类型引用,因此,使用数组项动态确定类型是不可能的:没有数组项,甚至没有Array实例.
我正在创建一个模拟类,用于为我的Angular2 TypeScript项目生成示例数据.我仍然是编程的初学者,并且努力使用有关TypeScript的信息.我的问题:
我想创建100个项目并将它们保存在一个数组中.将动态生成100个项目.我使用的静态方式非常简单,但我怎么能动态地做到这一点?我从一些迭代代码开始,但我怎样才能最好地替换console.log代码,并让迭代的输出作为静态数据.我需要一些例子
mock-names.ts(静态)
export var NAMES: Name[] = [
{"id": 01, "name": "Tony"},
{"id": 02, "name": "Jake"}
]
Run Code Online (Sandbox Code Playgroud)
mock-names-动态.(动态)
export var NAMES = [];
for (let i = 1; i < 100; i++) {
console.log(i);
}
Run Code Online (Sandbox Code Playgroud)
name.ts(名称类文件)
export class Name {
id: number;
name: string;
}
Run Code Online (Sandbox Code Playgroud) 我正在开发一个项目,其中一个要求是重写ASP.NET应用程序.旧的ASP.NET应用程序基于.NET Framework 1.1.新的ASP.NET应用程序基于.NET Framework 3.5.
旧Web应用程序中的一个功能是发送电子邮件的能力.旧代码使用System.Web.Mail.SmtpMail该类,而新的Web应用程序使用System.Net.Mail.SmtpClient该类.
在我们的开发服务器上进行测试时,一切正常.但是,我们有两个beta客户端测试我们的软件,他们都遇到了在新的Web应用程序中发送电子邮件的问题.
具体例外情况如下:
无法连接到远程服务器---> System.Net.Sockets.SocketException:无法建立连接,因为目标计算机主动拒绝它
旧的和新的ASP.NET应用程序都在同一台服务器上(Windows Server 2003).它们都使用相同的Exchange邮件服务器.为什么旧的ASP.NET应用程序可以成功发送电子邮件,但新的应用程序不能?
我查看了旧代码,它没有使用任何形式的身份验证,只是指定了发件人的电子邮件地址,收件人的电子邮件地址,主题,正文和服务器,并发送了邮件.我在新代码中做了同样的事情,唯一的区别是我使用了SmtpClient类.
下面是新ASP.NET应用程序的代码片段:
System.Net.Mail.MailMessage mail = new System.Net.Mail.MailMessage();
mail.To.Add(messageTo);
mail.From = new MailAddress(messageFrom);
mail.Subject = messageSubject;
mail.Body = messageBody;
SmtpClient client = new SmtpClient();
client.Host = smtpServer;
client.Send(mail);
Run Code Online (Sandbox Code Playgroud) 考虑我有以HTML编写的以下网页(仅限正文部分):
<body>
<p>
...
</p>
<script>
function fn() {
// do stuff
}
</script>
</body>
Run Code Online (Sandbox Code Playgroud)
现在,如果我用一个div 替换JavaScript中的innerHTMLof document.body,那么body部分变为:
<body>
<div>
...
</div>
</body>
Run Code Online (Sandbox Code Playgroud)
... 如果在代码的其余部分(任何上下文)中没有任何对它的引用存在,那么该fn对象是否有资格进行垃圾收集?
考虑下面的片段,它将一个对象数组转换为数字数组,过滤掉负值,然后加倍2:
var objects = (new Array(400)).fill({
value: Math.random() * 10 - 5
});
var positiveObjectValuesDoubled = objects.map(
item => item.value
).filter(
value => value > 0
).map(
value => value * 2
);
Run Code Online (Sandbox Code Playgroud)
当像这样链接在一起时,总共创建了多少个实际的Array对象?1还是3?(不包括初始objects数组).
特别是,我在谈论由中创建的中间Array对象filter,然后map是链中的第二个调用:考虑到这些数组对象本身没有显式引用,Javascript运行时是否足够智能以在可能的情况下优化,在这种情况下,使用相同的内存区域?
如果无法用明确的是或否回答这个问题,我怎样才能在各种浏览器中确定这一点?(据我所知,数组构造函数不能再被覆盖,所以这不是一个选项)
我们正在寻求为我们的网站访问者实施禁用跟踪的选项.
我已阅读此页面上的文档,但我仍然不清楚如何执行此操作:https://developers.google.com/analytics/devguides/collection/gtagjs/user-opt-out
仅触发"window ['ga-disable-GA_TRACKING_ID'] = true就足够了;" 单击按钮时?Google Analytics(分析)会记住此用户的设置,还是基于每次访问?如果我有第二个按钮将其设置为"false",用户是否可以重新启用跟踪?
谢谢!
解决了:
将以下代码粘贴到Google Analytics代码之前的标题中.
<script>
// Set to the same value as the web property used on the site
var gaProperty = 'UA-XXXX-Y';
// Disable tracking if the opt-out cookie exists.
var disableStr = 'ga-disable-' + gaProperty;
if (document.cookie.indexOf(disableStr + '=true') > -1) {
window[disableStr] = true;
}
// Opt-out function
function gaOptout() {
document.cookie = disableStr + '=true; expires=Thu, 31 Dec 2099 23:59:59 UTC; path=/';
window[disableStr] = true; …Run Code Online (Sandbox Code Playgroud) 假设我有两个进程:
进程 1 正在向进程 2 发送一个有效的 html 字符串:
ipcRenderer.send('open-window-from-string',
'<!DOCTYPE html>' + '<html>' + htmlElement.innerHTML + '</html>');
Run Code Online (Sandbox Code Playgroud)
进程 2(电子主进程)试图从该字符串打开一个新窗口:
ipc.on('open-window-from-string', (event, htmlString) => {
const windowFromString= BrowserWindow.fromWebContents(htmlString);
}
Run Code Online (Sandbox Code Playgroud)
我知道我可以将 html 保存为实际的 html 文件。这样,在使用时一切正常:
loadURL(`file://${__dirname}/windowFromString.html`);
Run Code Online (Sandbox Code Playgroud)
但是,这会导致不必要的读/写操作。
这就是为什么我试图从我的记忆中的 htmlString 加载一个新窗口。那么问题又来了: 是否可以从内存中的 html 字符串加载电子 webContents?
在此先感谢您的帮助。
问候, Megajin
我需要将音频信号除以另一个(幅度方向).如何在不使用ScriptProcessorNode的情况下在Web Audio API中完成此操作?(使用ScriptProcessorNode,任务很简单,但由于固有的性能问题,它完全无法用于生产)
考虑两个音频源,例如两个振荡器节点,oscA以及oscB:
var oscA = audioCtx.createOscillator();
var oscB = audioCtx.createOscillator();
Run Code Online (Sandbox Code Playgroud)
现在,考虑的是,这些振荡器的LFO,都与低(即<20Hz的)的频率,并且它们的信号被用于控制一个单一的目的地AudioParam,例如,增益一个的GainNode.通过各种路由设置,我们可以定义这两个信号之间的数学运算.
加成
如果oscA和oscB都直接连接到目标AudioParam,它们的输出将加在一起:
var dest = audioCtx.createGain();
oscA.connect(dest.gain);
oscB.connect(dest.gain);
Run Code Online (Sandbox Code Playgroud)
减法
如果输出oscB被首先路由通过另一个 GainNode用的增益-1,然后将其连接到所述目的地AudioParam,然后输出oscB被有效地减去从的oscA,因为我们正在有效做一个oscA + -oscB运算.使用这个技巧我们可以从另一个信号中减去一个信号:
var dest = audioCtx.createGain();
var inverter = audioCtx.createGain();
oscA.connect(dest.gain);
oscB.connect(inverter);
inverter.gain …Run Code Online (Sandbox Code Playgroud) 我正在使用 WebCodecs AudioDecoder来解码 OGG 文件(vorbis 和 opus)。AudioDecoder配置中的编解码器字符串设置分别为vorbis和opus。
我已将容器解析为页面,并且AudioDecoder几乎已准备好工作。
但是,我无法弄清楚description它所期望的字段。我已经阅读了Vorbis WebCodecs Registration,但我仍然迷失方向。那是:
let decoder = new AudioDecoder({ ... });
decoder.configure({
description: "", // <----- What do I put here?
codec: "vorbis",
sampleRate: 44100,
numberOfChannels: 2,
});
Run Code Online (Sandbox Code Playgroud)
编辑:我知道它需要有关 OGG 文件结构的关键信息。我不明白的是那里到底有什么。绳子看起来怎么样?它是一个以点分隔的参数字符串吗?
javascript ×6
arrays ×3
typescript ×2
angular ×1
asp.net ×1
c# ×1
decorator ×1
electron ×1
gtag.js ×1
html ×1
jasmine ×1
node.js ×1
oggvorbis ×1
reflection ×1
webcodecs ×1