gpt4 book ai didi

javascript - 异步推送数组中的项目

转载 作者:行者123 更新时间:2023-12-03 09:08:49 26 4
gpt4 key购买 nike

我想将一个对象插入数组,其中一个字段是需要从异步函数获取的值

function loadContentAsync(url) {
var deferred = Q.defer();
request(url, function (err, res, html) {
if (!err) {
deffered.resolve(html);
}
});
return deffered.promise;
}

var aList = $('#mCSB_5_container ul').find('a');
console.log(c);

var list = [];
aList.each(function (i, elem) {
var html = loadContentAsync(this.attribs.href);
list.push({
title: $(this).text(),
url: this.attribs.href,
content: html
});
});

但是当我运行此代码时,由于 loadContentAsync 函数没有同步返回值,因此 html 字段将为 null。

如何异步处理该字段?

最佳答案

您需要等待 promise 得到解决。为了保持元素的正确顺序,您应该使用 Q.all() 来累积所有 Promise 的结果:

function loadContentAsync(url) {
var defer = Q.defer();
request(url, function (err, res, html) {
if (err) {
defer.reject(err);
}
else {
defer.resolve(html);
}
});
return defer.promise;
}

var aList = $('#mCSB_5_container ul').find('a');
console.log(c);

var promises = aList.map(function (i, elem) {
return loadContentAsync(this.attribs.href);
}).get();

var list = [];
Q.all(promises).then(function (htmlList) {
htmlList.forEach(function (html) {
list.push({
title: $(this).text(),
url: this.attribs.href,
content: html
});
});
});

关于javascript - 异步推送数组中的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32139732/

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