Я прочитал Produce a promise which depends on recursive promises chaining recursive promise with bluebird Recursive Promises? , но я до сих пор не могу понять, что случилось с тем, как я структурировать мои обещанияРекурсивный Promise в Bluebird не возвращаются
Так я выборку объектов из база данных. Каждый объект имеет поле, но иногда он имеет ссылку на UUID. Так, например, если у человека есть друг и мать, это было бы как
{
"id": e872530a-27fc-4263-ad39-9a21568c31ef,
"name": "dood",
"friendId": "571746fc-686d-4170-a53e-7b7daca62fa0",
"motherId": "99b65849-1f1c-4881-a1d0-c5ae432e83a2"
}
Теперь идея, когда я выбирать объект, я хочу, чтобы заменить любой другой UUID с расширенной версии.
{
"id": e872530a-27fc-4263-ad39-9a21568c31ef,
"name": "dood",
"friendId": {
"id": "571746fc-686d-4170-a53e-7b7daca62fa0",
"name": "peter"
},
"motherId": {
"id": "99b65849-1f1c-4881-a1d0-c5ae432e83a2",
"name": "ma"
}
}
Таким образом, я использую обещание и рекурсию, чтобы попробовать это, но я не могу понять, что происходит не так в моих обещаниях. Я получаю этот результат вместо
{
"id": e872530a-27fc-4263-ad39-9a21568c31ef,
"name": "dood",
"friendId": {
"isFulfilled": False,
"isRejected": False
},
"motherId": {
"isFulfilled": False,
"isRejected": False
}
}
Я с помощью Bluebird JS, а вот как выглядит код
function getExpandedObj(uuid, recursiveLevel) {
return getObj(uuid) //This gets the object from the database
.then(function(obj) {
//I convert the obj to an array where each element is
//{property:value} so I can do a map over it
// some code to do that, I think it's irrelevant so I'll
// skip it
return objArr;
})
.map(function(obj) {
//prevent infinite recursion
if (recursiveLevel > 0) {
for (var property in obj) {
if (typeof(obj[property]) === "string") {
var uuid = obj[property].match(/(\w{8}(-\w{4}){3}-\w{12}?)/g);
if (uuid != null) {
uuid = uuid[0];
obj[property] = getExpandedObj(uuid, recursiveLevel-1)
.then(function(exObj) { return exObj;})
}
}
}
}
})
.then(function(obj) {return obj;})
}
Ах, вот что [вы просили ранее] (http://stackoverflow.com/q/32193946/1048572). – Bergi