【发布时间】:2016-12-29 04:51:11
【问题描述】:
我不知道 SO 是否适合提出此类问题。
我知道一点Promises,我在Node/Express 环境中使用它们来“修复”Node 在查询数据库时的异步行为(= 等待数据库回答,然后做一些事情)。
但是,我越用,越不知道什么时候不用。
比如我写了一段这样的代码(本地脚本查询Google Matrix API)...
....
for (var i = 0; i < rows.length; i++) { // loop over a CSV file by line
var cell = rows[i].split(/;/)
var origin = cell[1]
var destination = cell[2]
var id = cell[0]
Promise.all([origin, destination, id]).then((p) => {}
...
我不知道在这里使用Promise.all 是否有意义...
有规则要知道吗?我不明白的行为?
换一种说法,我什么时候知道我的脚本运行 function 没有正确的参数(argument 是从另一个 function 返回的“风险”,这不是“结束”)...?
谢谢。
【问题讨论】:
-
您使用 Promise 来帮助处理异步进程。如果没有任何异步,那么就没有必要使用 Promise。在您的示例中,
origin、destination和id是 字符串,而不是承诺。将这些值传递给Promise.all是没有意义的。我认为你应该继续了解 Promise,这样你才能真正了解它们正在解决的问题。那么“什么时候不使用它们”的问题应该是显而易见的。 -
在上面的例子中你不会使用 Promises,因为它不是异步的。您通常会在需要回调或等待某些异步行为完成的任何时候使用 Promise。
-
这没有意义,
Promise.all(list)返回一个承诺,该承诺会在list上的所有承诺完成后运行,但是您传递的是...单元格的列表?文本?当然不是承诺。 -
“修复”异步行为不要修复它,喜欢它。 async 很棒而且非常有用,你只需要了解你可以用它做什么。
-
I use them ... to 'fix' the asynchronous behavior- 实际上,通过使用 Promises,您是在 使用 异步行为 - 没有什么可以使异步操作同步 - 一旦你异步,你就不能回去了
标签: javascript promise