小编Tom*_*uer的帖子

初始配置后更改GitLab CI Multirunner执行程序

我正在阅读GitLab CI Multirunner文档,其中介绍了如何设置GitLab CI Multirunner执行程序,但我似乎无法找到有关在初始设置时更改执行程序的任何内容,无论是在文档中还是在线搜索.这支持吗?

gitlab gitlab-ci gitlab-ci-runner

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

如何解决承诺?

目前,此代码打印出零,因为数组中的第一个promise立即解析.

const promises = [];
const promiser = (number) => new Promise((resolve, reject) => window.setTimeout(() => resolve(number), number * 100));
for (let index = 0; index < 10; index++) {
  const promise = promiser(index);
  promises.push(promise);
}

Promise.race(promises).then(r => console.debug(r));
Run Code Online (Sandbox Code Playgroud)

我希望这样做,以便一旦最快的承诺解决,它将被从promises数组中删除,并Promise.race与剩余的承诺进行新的调用,重复直到没有任何承诺.

由于Promise.race承诺,而不是解决的承诺本身的返回结果,虽然,我不能确定哪些承诺是它是解决了,我不知道从数组中删除哪一个.有没有办法知道这个?我想我可以使用某种相关键和结果返回一个复杂的对象,但这看起来很奇怪.我希望Promise.race回调的第二个参数是promise的索引,但事实并非如此,它也没有意义,因为then它只是then另一个promise,所以它怎么会知道它应该返回一些索引.你能想到一个更好的方法吗?

另外,我用第一个承诺所有的承诺race,但这不应该成为后续race的问题,对吧?如果在随后的race调用之前同时解决了另一个承诺,它应该只返回它,没问题,对吗?如果多个承诺在此期间确实解决了,它只会返回第一个(按照数组顺序或分辨率顺序?)然后下一个race将返回第二个等等......对吧?

顺便说一下,我也可以走数组并删除有的承诺isResolved,但这不是真的.尽管如此,即使多次承诺在调用之间解决,情况也会完全破坏race.

javascript node.js promise typescript es6-promise

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

TypeScript将React-Redux装饰器与有状态组件连接起来

我已经创建了一个说明性组件Hello,我尝试使用适当的类型props,state同时使用connectReact-Redux中的装饰器.

您可以在我创建的GitHub存储库中进行演示来说明这一点.

如果connect没有用作装饰,而是,export default connect(mapStateToProps, mapDispatchToProps)(Hello)使用和组件本身没有出口,这个工程.

type HelloStateProps = { enthusiasmLevel: number; };
type HelloDispatchProps = { incrementEnthusiasm: () => void; decrementEnthusiasm: () => void; };
type HelloOwnProps = { name: string; };
type HelloProps = HelloStateProps & HelloDispatchProps & HelloOwnProps;
type HelloState = { useHi: boolean; };

// I am getting an error here
@connect(mapStateToProps, mapDispatchToProps)
export default class Hello extends React.Component<HelloProps, HelloState> …
Run Code Online (Sandbox Code Playgroud)

typescript reactjs redux react-redux

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

WebRTC 对等连接未在 Safari 上建立,但在 Chrome、Firefox 中建立

我整理了一个快速片段来测试在同一浏览器选项卡上下文中建立 WebRTC 对等连接。

const peerConnection1 = new RTCPeerConnection({ iceServers: [ { urls: 'stun:stun.l.google.com:19302' } ] });
peerConnection1.addEventListener('signalingstatechange', _ => log('1 signaling state ' + peerConnection1.signalingState));
peerConnection1.addEventListener('icegatheringstatechange', _ => log('1 ICE gathering state ' + peerConnection1.iceGatheringState));
peerConnection1.addEventListener('connectionstatechange', _ => log('1 connection state ' + peerConnection1.connectionState));

const peerConnection2 = new RTCPeerConnection({ iceServers: [ { urls: 'stun:stun.l.google.com:19302' } ] });
peerConnection2.addEventListener('signalingstatechange', _ => log('2 signaling state ' + peerConnection1.signalingState));
peerConnection2.addEventListener('icegatheringstatechange', _ => log('2 ICE gathering state ' + peerConnection1.iceGatheringState));
peerConnection2.addEventListener('connectionstatechange', _ => log('2 …
Run Code Online (Sandbox Code Playgroud)

javascript safari mobile-safari sdp webrtc

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

在浏览器中使用 JavaScript 读取带有 for-await 的流

我使用以下代码在浏览器中使用fetch带有进度指示的用户手势来下载较大的内容:

const url = 'https://source.unsplash.com/random';
const response = await fetch(url);
const total = Number(response.headers.get('content-length'));
let loaded = 0;
const reader = response.body.getReader();
let result;
while (!(result = await reader.read()).done) {
  loaded += result.value.length;
  // Display loaded/total in the UI
}
Run Code Online (Sandbox Code Playgroud)

我在相关问题中看到了一个片段,这让我相信这可以简化为:

const url = 'https://source.unsplash.com/random';
const response = await fetch(url);
const total = Number(response.headers.get('content-length'));
let loaded = 0;
for await (const result of response.body.getReader()) {
  loaded += result.value.length;
  // Display loaded/total in the UI
}
Run Code Online (Sandbox Code Playgroud)

getReader返回 …

javascript

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

WebRTC 数据通道连接已建立,但未收到消息

我在接收两个对等点之间的 WebRTC 数据通道消息时遇到问题。

\n\n

下面是一个 MVP,其中两个对等点位于同一页面,并且信号通道被替换为纯 JavaScript 对象交换。

\n\n

我不会选择使用trickle ICE,并且我知道不使用它的缺点,我不认为它会以任何方式干扰我下面的 MVP。

\n\n

代码的行为完全符合预期,并且所有日志消息都会通过。唯一缺少的是用于数据通道消息处理的消息,就好像消息从未从任一对等方发送到另一方一样。这是尝试发送Test 的事件处理程序。发送方法调用失败并出现空引用错误,我无法跟踪其根本原因。

\n\n

我遵循《Untangling the WebRTC Flow》来获得这个 MVP。您可以在这里实时查看它,因此您不必亲自运行它。

\n\n
class Peer {\n    constructor(name) {\n        this.name = name;\n    }\n    offer() {\n        const peerConnection = new webkitRTCPeerConnection({ iceServers: [ { url: "stun:stun.l.google.com:19302" } ] });\n        peerConnection.onnegotiationneeded = event => console.debug(this.name, "onnegotiationneeded");\n        peerConnection.onsignalingstatechange = event => console.debug(this.name, "onsignalingstatechange", peerConnection.signalingState);\n        peerConnection.onicegatheringstatechange = event => console.debug(this.name, "onicegatheringstatechange", peerConnection.iceGatheringState);\n        peerConnection.oniceconnectionstatechange = event => console.debug(this.name, "oniceconnectionstatechange", peerConnection.iceConnectionState);\n …
Run Code Online (Sandbox Code Playgroud)

webrtc rtcdatachannel

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