小编Hed*_*dge的帖子

使用 Promise 收集未知大小的分页数据

我正在查询 REST-API 以获取所有组。这些组每批 50 个。我想在继续处理它们之前收集所有这些组。

到目前为止,我依赖于回调,但我想使用 promise 来链接所有组的检索,然后进一步处理结果数组。

我只是不太明白如何使用承诺替换递归函数调用。

我将如何使用 A+ 承诺来逃避我用这段代码创建的回调地狱?

function addToGroups() {
   var results = []

   collectGroups(0)

   function collectGroups(offset){
     //async API call
     sc.get('/tracks/'+ CURRENT_TRACK_ID +'/groups?limit=50&offset=' + offset , OAUTH_TOKEN, function(error, data){

       if (data.length > 0){
         results.push(data)
         // keep requesting new groups
         collectGroups(offset + 50)
       }
       // finished
       else {
         //finish promise
       }
     })
   }
 }
Run Code Online (Sandbox Code Playgroud)

javascript node.js promise

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

在Map()的条目上使用Promise.all

我正在使用Map来获取一些键/值对

let myMap = new Map()
myMap.set('foo', 'bar')
myMap.set('foo2', 'bar42')
Run Code Online (Sandbox Code Playgroud)

对于每个Map条目,我执行一个返回Promise的函数.所有这些Promise都可以使用并行执行Promise.all.

这就是我现在这样做的方式:

let mapPromises = []
myMap.forEach((value, key) => {
  mapPromises.push(MyModel.forge({key, language, value}).save())
})
await Promise.all(mapPromises)
Run Code Online (Sandbox Code Playgroud)

是否有另一种(更短?,更快?)方法来实现这一点,而不是将所有函数调用推入数组然后触发Promise.all

javascript promise async-await ecmascript-6

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

防止Node.js 8+退出未捕获的异常

免责声明:我知道当应用程序处于未定义状态时,没有退出应用程序有多糟糕.我打算只将它用于测试,因为我想知道它是否可行.

我认为通过处理process uncaughtException事件可以阻止Node.js 8+关闭,但是后面的脚本在第一个之后完成throw

process.on('uncaughtException', err => {
  console.log(err, 'Uncaught Exception thrown');
  // process.exit(1);
});

console.log("before throwing the first time")
throw 42;
console.log("before throwing once again")
throw 42;
console.log("after throwing a 2nd time")
Run Code Online (Sandbox Code Playgroud)

我怎么能防止这种情况?

javascript node.js

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

INNER JOIN 中的多个条件

我有两个表userproduct它们具有一对多关系(一个表user可能有多个product)。

\n\n

我想创建一个查询来获取所有user同时具有橙子和香蕉的 s。在我下面的例子中,这将是john并且leeroy

\n\n

我该如何制定查询来做到这一点?

\n\n

只有一个条件我会这样:

\n\n
SELECT * FROM "user" \nINNER JOIN "product" ON "product"."fk_user" = "user"."id"\nWHERE "product"."product" = \'banana\';\n
Run Code Online (Sandbox Code Playgroud)\n\n

桌子user

\n\n
\xe2\x95\x94\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\xa6\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x97\n\xe2\x95\x91 id \xe2\x95\x91 name    \xe2\x95\x91\n\xe2\x95\xa0\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\xac\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\xa3\n\xe2\x95\x91 1  \xe2\x95\x91 michael \xe2\x95\x91\n\xe2\x95\xa0\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\xac\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\xa3\n\xe2\x95\x91 2  \xe2\x95\x91 john    \xe2\x95\x91\n\xe2\x95\xa0\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\xac\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\xa3\n\xe2\x95\x91 3  \xe2\x95\x91 leeroy  \xe2\x95\x91\n\xe2\x95\xa0\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\xac\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\xa3\n\xe2\x95\x91 4  \xe2\x95\x91 tony    \xe2\x95\x91\n\xe2\x95\x9a\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\xa9\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x9d\n
Run Code Online (Sandbox Code Playgroud)\n\n

桌子product

\n\n
\xe2\x95\x94\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\xa6\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x97\n\xe2\x95\x91 product \xe2\x95\x91 fk_user \xe2\x95\x91\n\xe2\x95\xa0\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\xac\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\xa3\n\xe2\x95\x91 orange  \xe2\x95\x91 1       \xe2\x95\x91\n\xe2\x95\xa0\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\xac\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\xa3\n\xe2\x95\x91 orange  \xe2\x95\x91 2 …
Run Code Online (Sandbox Code Playgroud)

sql postgresql relational-division

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

WPF:设置text-Label的透明度?

我有一个普通的标签,并希望使其半透明.这该怎么做?

代码只是:

<Label FlowDirection="RightToLeft" FontSize="40" Padding="0" FontFamily="Arial" FontWeight="Bold"">
    X    
</Label>
Run Code Online (Sandbox Code Playgroud)

.net wpf xaml visual-studio

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

ASCII 和 UTF8 编码的字符串具有不同的长度!

我正在阅读一个流,想知道为什么 UTF-8 编码的字符串比 ASCII 字符串短。

  ASCIIEncoding encoder = new ASCIIEncoding();
  UTF8Encoding enc = new UTF8Encoding();   
  string response = encoder.GetString(message, 0, bytesRead); //4096
  string responseUtf8 = enc.GetString(message, 0, bytesRead);  //3955
Run Code Online (Sandbox Code Playgroud)

.net c# encoding

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

在 QtCreator 的文本编辑器中禁用 --COMMAND-- 和 --INSERT-- 模式

不知何故,我设法将 QtCreator 的文本模式设置为 --COMMAND-- 或 --INSERT-- 模式。

我不在乎它是什么或它如何运作。我该如何摆脱它?我所关心的是正常的文本编辑,没有这些奇怪的模式。其中之一允许我选择文本部分但不能删除它们。我的鼠标光标现在甚至不见了。

qt qt-creator

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

使printf更快地写入Windows命令行

我正在分析一些高分辨率midi数据.我正在把它写到标准输出,但由于有太多的数据进入,所以在我做了实际动作之后它们需要几秒钟才能显示出来.

目前这一行写入命令行:

std::vector<unsigned char> message;
...
printf("W 1 = %03d, W 2 = %03d, W 3 = %03d \n",(int)message[2],(int)message2[1],(int)message2[2]);
Run Code Online (Sandbox Code Playgroud)

c++

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

更短的方法: if (a !== undefined &amp;&amp; ab !== undefined &amp;&amp; abc === 'foo')

如果我需要检查对象的属性,以及它的对象(等等),但首先无法确定该对象是否存在,如何使条件比这更简单?

if (a !== undefined && a.b !== undefined && a.b.c === 'foo')
Run Code Online (Sandbox Code Playgroud)

如果LoDash有任何有意义的功能,我也会使用它。

javascript object lodash

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

确保 Go 模板中的路径始终以斜杠结尾

我正在为一堆部署编写 Helm 图表。我提供的值可以是:

my_value: "/opt/my-path"或者my_value: "/opt/my-path/"

现在我想确保/路径的尽头总是有一个。

我如何使用Go模板来做到这一点?

go-templates kubernetes-helm sprig-template-functions

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