Javascript 具有搜索功能
我有一个对象数组,有一个按名称搜索一本书的函数,我想通过promises使用搜索函数,搜索成功后,应该执行convert函数。当我这样做时,我得到一个空数组Javascript 具有搜索功能,javascript,promise,Javascript,Promise,我有一个对象数组,有一个按名称搜索一本书的函数,我想通过promises使用搜索函数,搜索成功后,应该执行convert函数。当我这样做时,我得到一个空数组 let book1 = { name: "wind", author: 'smith', size: 314, }; let book2 = { name: "moon", author: 'wild', size: 421, }; let book3 = { name: "sun", author: 'ja
let book1 = {
name: "wind",
author: 'smith',
size: 314,
};
let book2 = {
name: "moon",
author: 'wild',
size: 421,
};
let book3 = {
name: "sun",
author: 'jacob',
size: 510,
};
let books1 = [book1, book2, book3];
let books = [];
function searchName(search) {
return new Promise(function(resolve, reject) {
books1 = books1.filter(function(elem) {
elem.name.includes(search)
})
})
};
function convert() {
return books = books1.map(item => item.name);
};
searchName("wind").then(convert);
console.log(books);
你以各种方式错误地使用承诺-
const books=//对不会重新分配的绑定使用const
[{name:“风”//如果您愿意,可以在数组中声明对象
作者:史密斯
searchBooks(e.target.value)//获取筛选过的书籍
.then(convert)//传递要转换的书籍,获取结果
.then(console.log,console.error)//然后记录结果或错误
)
function searchName(search) {
return new Promise(function (resolve) {
books1 = books1.filter(function (elem) {
return elem.name.includes(search);
});
if (books1.length) {
resolve();
}
});
}
function convert() {
books = books1.map(item => item.name);
console.log(books);
return books;
}
searchName('wind').then(convert);
你的承诺永远不会解决或拒绝。而且它是在做一些同步的事情,因此将其作为承诺不会带来任何价值。在承诺中包装同步过程毫无意义(无论如何,99.9999%的时间)。