我目前正在使用WP-API,在其中我根据对象中的元素创建页面。我基本上要做的是遍历对象,并为每个元素:创建页面,获取返回的pageID,将其保存到该元素,然后继续该对象中的下一个元素。
但是,当前正在发生的事情是它不等待元素创建WP页面完成。
我知道这是一个常见问题,但是我没有找到适合所用“ for ... in ...”循环的答案。
那是我的代码rn:
async function checkContent(content) {
let currentObj;
for(const key in content) {
currentObj = content[key][0];
console.log(currentObj);
currentObj.postId = await createPage(currentObj.title, currentObj.content);
}
}
function createPage(title, content) {
var wp = new WPAPI({
endpoint: 'http://localhost:8888/wordpress/wp-json',
username: 'admin',
password: 'pass'
});
wp.pages().create({
title: title,
content: content,
status: 'publish'
})
.catch(error => {
console.error('Error: ' + error.message);
})
.then(function (response) {
console.log(response.id);
return response.id;
})
}
谁能告诉我我做错了什么?我没有正确使用'await'吗?
答案 0 :(得分:2)
您不会从createPage
返回任何承诺,所以await
等不及了。
您已返回使用wp.pages().create
创建的Promise链:
function createPage(title, content) {
var wp = new WPAPI({
endpoint: 'http://localhost:8888/wordpress/wp-json',
username: 'admin',
password: 'pass'
});
return wp.pages().create({
title: title,
content: content,
status: 'publish'
})
.catch(error => {
console.error('Error: ' + error.message);
})
.then(function(response) {
console.log(response.id);
return response.id;
})
}