返回信息流求助各位大佬,关于NodeJS回调的问题。
this.get("network") 返回一个Promise对象,通过它可以返回所有network的列表。network列表长度不确定。
但是有的network有个属性是config,有的network没有。config属性是包含其他属性,如flag属性,的对象。
我们只能通过如下方法去获取含有此flag的network。
```
var networkWithFlag = [];
network.get("config").then((config) => {
if (config["flag"]) {
//get the network which has flag attr.
// config["name"]返回network的名称。
networkWithFlag.push(config["name"]);
}
}).catch((err) => {
});
```
获取所有network的代码:
```
var networkPromiseList = [];
this.get("network").then((networks) => {
for (var i = 0; i < networks.length; i++) {
networkPromiseList.push(networks[i].get("name"));
}
}).catch((err) => {
});
Promise.all(networkPromiseList).then((networkNameList) => {
//返回所有network的名称列表。
resolve(networkNameList);
}).catch((err) => {
});
```
现在我需要获取所有不含有flag属性的network。
请问怎样做?求提供一个思路。我已经快不行了。。
这是一条镜像帖。来源:北邮人论坛 / java-script / #2300同步于 2017/6/8
该镜像源已超过 30 天没有更新,可能在源站已被删除。
JavaScript机器人发帖
【问题】求助大佬,关于NodeJS回调的问题
Idontknow
2017/6/8镜像同步15 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
没懂,能讲解得详细一点吗?
【 在 hain 的大作中提到: 】
: lodash path, some, filter 之类的函数组合一下
: https://lodash.com/docs/4.17.4
没明白你的第二段代码 和 第一段代码有啥关系?
第二段是:networks[i].get("name")
第一段是:network.get("config")
啥意思?
networks是所有network的列表。networks[i]可以获取一个network。network是具有一系列属性的对象。其中就包括name 属性和config属性。name属性是必须的,所有的network都具有。config属性是非必须的,有的network不具备。
【 在 arence 的大作中提到: 】
: 没明白你的第二段代码 和 第一段代码有啥关系?
: 第二段是:networks[i].get("name")
: 第一段是:network.get("config")
: ...................
一个network 要么就是含有flag,要么就是不含有flag,只有这两种类型,对吧?
那你现在能得到所有network的name列表:networkNameList
能得到所有含有flag的network的name列表:networkWithFlag
剩下的不就是没有flag的network了吗?
对networkNameList这个列表里去掉networkWithFlag这个列表里的元素,不就是networkWithoutFlag了?
难道不是这样?
还是我根本没理解明白。。
【 在 Idontknow 的大作中提到: 】
: networks是所有network的列表。networks[i]可以获取一个network。network是具有一系列属性的对象。其中就包括name 属性和config属性。name属性是必须的,所有的network都具有。config属性是非必须的,有的network不具备。
:
思路是这个思路。
问题是get(key)方法,去获取属性值的对象,它里面写的是返回一个promise对象。对于存在的对象属性(如name属性),它能够返回name属性的所有属性。如果network存在config属性,get("config")也能够返回config所有属性。但是如果network不存在config属性,get("config").then().catch() 中then() 和catch()的log都不打印。
【 在 arence 的大作中提到: 】
: 一个network 要么就是含有flag,要么就是不含有flag,只有这两种类型,对吧?
: 那你现在能得到所有network的name列表:networkNameList
: 能得到所有含有flag的network的name列表:networkWithFlag
: ...................
但是如果network不存在config属性,get("config").then().catch() 中then() 和catch()的log都不打印
这可以说明get这个接口的实现有问题吧
【 在 Idontknow 的大作中提到: 】
: 思路是这个思路。
: 问题是get(key)方法,去获取属性值的对象,它里面写的是返回一个promise对象。对于存在的对象属性(如name属性),它能够返回name属性的所有属性。如果network存在config属性,get("config")也能够返回config所有属性。但是如果network不存在config属性,get("config").then().catch() 中then() 和catch()的log都不打印。
: