gpt4 book ai didi

javascript - Node Promises Bluebird Collections API 和 Spread() 问题

转载 作者:行者123 更新时间:2023-11-29 22:00:45 25 4
gpt4 key购买 nike

我正在尝试使用具有 Bluebirds Collection 功能的 promise 链。

例如其中一个脚本:

var rest = require("./promisified_restler.js");
function memory(token) {
CHECK='cfDJO9im';
URL='https://monitoring.api.foo.com/v1.0/833/';
SLUG='entities/en5mKIvs/checks/';
MODE='/test';

url = CHECK+URL+SLUG+CHECK+MODE
headers = { headers:
{ "X-Auth-Token": token }
}
return rest.post(url, headers);
}


module.exports = memory;

主要脚本:

var getToken = require('./get_token.js');
var memory = require('./memory.js');
var cpu = require('./cpu.js');
var http = require('./http.js');
var httpPort = require('./http_port.js');
var network = require('./network.js');

getToken()
.catch(function(e) {
console.log(e);
})
.all([cpu(token), memory(token)]).spread(function(cpu_result,
memory_result) {
console.log(JSON.stringify(cpu_result));
console.log(JSON.stringify(memory_result));
});
  1. 如何将 token 值传递给每个返回 promise 对象的函数?

  2. 如果其中一个 promise 对象返回被拒绝,Promise.all() 会发生什么? .all() 是否停止、返回 false,并且没有完成数组中的其余项目?

  3. 函数/ promise 对象是否并行运行?
  4. 是否可以让 spread() 只接受一个参数并将其应用于每个返回值?例子:.spread(函数(returnedValue) {console.log(JSON.stringify(returnedValue)); });

最佳答案

你调用 .all() 是错误的,它不接受任何参数(静态版本接受)。如果您要 .spread,则无论如何都不需要它。

Promises 不会运行任何东西,它们只会在某些东西运行时告诉您。您是调用某个函数来启动 I/O 的人——如果您随后在下一行同步调用另一个函数,则两者同时运行。如果您在第一个函数完成后调用另一个函数,它们将按顺序运行。 Promise.all 只会在两者都完成时为您提供一个 View ,与它们没有任何其他关系。

我不明白 1. 和 4.. 这是代码:

getToken()
.then(function(token) {
return [cpu(token), memory(token)];
})
.spread(function(cpu_result, memory_result) {
console.log(JSON.stringify(cpu_result));
console.log(JSON.stringify(memory_result));
})
/*
This is totally unnecessary because unhandled errors are logged anyway.
Uncomment if you want to actually handle the error
.catch(function(e) {
console.log(e);
});
*/

关于javascript - Node Promises Bluebird Collections API 和 Spread() 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23901948/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com