这里的进一步问题:promissione.all():在解决和/或拒绝所有承诺后返回一个结果
我正在使用Promissione.all迭代:
// var env_array = ["env1", "env2", "env3", "env4"];
Promise.all(env_array.map(function(env) {
return device_get_env(env).then(function(data) {
var connected = data.data.connected;
console.log(env, connected);
});
}).then(function(data) {
console.log(data);
}));
我有4种不同的环境。我正在搜索一个设备在所有这4个环境。有些返回404,有些返回200,有些返回属性connected=true,有些返回false。
基本上,我想在connected=true时触发一些函数,但如果connected对于环境为false,我将只显示一些环境的信息,当然,如果我将返回non404。
因此,我认为我可能会收集所有的结果,然后根据这些结果触发我的html" target="_blank">函数,而不是在迭代后立即触发函数。
你能建议一下,我该走哪条路吗?多谢了。
UPD:我试过这个:
Promise.all(env_array.map(function(env) {
return device_get_env(env);
}).then(function(data) {
console.log(data);
}));
它抛出:
TypeError: env_array.map(function(env) {
return device_get_env(env);
}).then is not a function. (In 'env_array.map(function(env) {
return device_get_env(env);
}).then(function(data) {
console.log(data);
})', 'env_array.map(function(env) {
return device_get_env(env);
}).then' is undefined)
由于某种原因,UPD1。那么块没有被执行,因为我在控制台中没有看到111:
Promise.all(env_array.map(function(env) {
return device_get_env(env);
})).then(function(data) {
console.log(111);
});
UPD2:就我的情况而言,我的一个或多个承诺被拒绝了,而承诺.全部被拒绝了。
您对一个括号的位置有问题:
Promise.all(env_array.map(function(env) {
...
}).then(function(data) {
...
})); // <- Move this up
应该是:
Promise.all(env_array.map(function(env) {
...
})).then(function(data) { // <- here
...
});
您需要使用来自承诺.all
的响应数组,如下所示:
// var env_array = ["env1", "env2", "env3", "env4"];
Promise.all(env_array.map(function(env) {
return device_get_env(env);
}) // Promise.all["PromiseEnv1", "PromiseEnv2", "PromiseEnv3", "PromiseEnv4"]
.then(function(data) {
console.log(data); // ["404", {connected: true}, {connected: false}, "404"];
// Now you can can process above array as you need.
}));
问题内容: 有没有办法在Redis中将一个函数的返回值传递给另一个函数?当然,如果您使用的是语言包装器(如Ruby),这很容易-但是从CLI来看又如何呢? 例如这样的东西,bash风格 或类似的东西 将返回键列表,但是我不知道如何获取这些键的所有值。 有什么想法吗? 问题答案: 在CLI中,您只需要让Shell完成其工作即可。 请注意,由于其线性复杂性,因此不应在应用程序中使用keys命令。
问题内容: 我尝试了以下失败的尝试: 在函数a中,我可以使用arguments关键字来访问参数数组,而在函数b中,这些参数将丢失。有没有办法像我尝试的那样将参数传递给另一个javascript函数? 问题答案: 用于对in函数具有相同的访问权,如下所示:
问题内容: 是否可以通过某种方式将一个函数的范围传递给另一个函数? 例如, 我宁愿直接访问变量,即,不使用类似或的任何东西,而只是直接使用或。 问题答案: 真正访问函数私有范围的唯一方法是在函数内部声明,这样就形成了一个闭包,允许隐式访问变量。 这是您的一些选择。 直接访问 在内部声明。 如果您不想在中使用,则可以将它们都放在更大的容器范围内: 这些是您可以直接使用的变量而无需任何额外的代码来移动
我有一个异步方法,它返回。 我将公开一个公共方法,该方法必须返回基于类a的数据的。此方法的调用方不应该知道classA: 到目前为止,一切都按预期进行。 现在,我喜欢在有ObjectB结果并调用void方法之后执行异步操作,我喜欢以某种方式将其传递给ObjectA: 但是似乎没有在中定义。 有没有办法做这样的手术?
问题内容: 我是ajax和回调函数的新手,如果我弄错了所有概念,请原谅我。 问题: 我可以将 回调 函数作为参数发送给将执行该回调的另一个函数吗? 问题答案: 对。函数引用与任何其他对象引用一样,您可以将它们传递到您的内心。 这是一个更具体的示例: 您还可以传递以下参数:
问题内容: 我想将传递给function()的所有参数作为参数传递给内部的另一个function(), 这可以在被调用过程中完成并将它们传递给,但是还有另一种方法吗? 本来 但是如果我的func1签名是 我如何将它们全部发送到func2,而不使用 有没有一种方法像在javascript中? 问题答案: 显式比隐式更好, 但是如果您真的不想键入一些字符,请执行以下操作: 都是局部变量,因此您不能在调