我正在阅读GitLab CI Multirunner文档,其中介绍了如何设置GitLab CI Multirunner执行程序,但我似乎无法找到有关在初始设置时更改执行程序的任何内容,无论是在文档中还是在线搜索.这支持吗?
目前,此代码打印出零,因为数组中的第一个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.
我已经创建了一个说明性组件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) 我整理了一个快速片段来测试在同一浏览器选项卡上下文中建立 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) 我使用以下代码在浏览器中使用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返回 …
我在接收两个对等点之间的 WebRTC 数据通道消息时遇到问题。
\n\n下面是一个 MVP,其中两个对等点位于同一页面,并且信号通道被替换为纯 JavaScript 对象交换。
\n\n我不会选择使用trickle ICE,并且我知道不使用它的缺点,我不认为它会以任何方式干扰我下面的 MVP。
\n\n代码的行为完全符合预期,并且所有日志消息都会通过。唯一缺少的是用于数据通道消息处理的消息,就好像消息从未从任一对等方发送到另一方一样。这是尝试发送Test 的事件处理程序。发送方法调用失败并出现空引用错误,我无法跟踪其根本原因。
\n\n我遵循《Untangling the WebRTC Flow》来获得这个 MVP。您可以在这里实时查看它,因此您不必亲自运行它。
\n\nclass 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) javascript ×3
typescript ×2
webrtc ×2
es6-promise ×1
gitlab ×1
gitlab-ci ×1
node.js ×1
promise ×1
react-redux ×1
reactjs ×1
redux ×1
safari ×1
sdp ×1