【发布时间】:2020-09-29 22:30:43
【问题描述】:
节点中的代码及其递归方法。 我的最终目标是等待该过程完成,然后再开始另一个。因为它将写入数据库。
router.post('/contactImport', function (req, res) {
var ContactList = req.body.contacts;
var pageSize = 3;
var offset = 0;
ImportingContactTest(contactList, pageSize, offset, function (callbackTestCall) {
console.log("ImportingContactTest_final: ", callbackTestCall);
});
res.send("Ok");
});
递归函数:
function ImportingContactTest(contactList, pageSize, offset, callbackImportingContactTest) {
const fragment = GetContactFragment(contactList, pageSize, offset);
console.log("fragmentData_length: ", fragment.data.length);
if (fragment.nextPage) {
offset = fragment.nextPage;
console.log("offset: ", offset);
ImportingContactTest(contactList, pageSize, offset, function (callbackImportingContactTest_1) {
console.log("Test Processes");
callbackImportingContactTest("All Done");
});
} else {
callbackImportingContactTest("All Done Else");
}
};
获取要上传的批次:
const GetContactFragment = (contactList, pageSize, offset = 0) => {
return {
data: contactList.slice(offset, offset + pageSize),
nextPage: offset +
pageSize < contactList.length ? offset + pageSize : undefined
}
};
我现在得到的结果:
ContactList: 10
pageSize: 3
fragmentData_length: 3
offset: 3
fragmentData_length: 3
offset: 6
fragmentData_length: 3
offset: 9
fragmentData_length: 1
Test Processes
Test Processes
Test Processes
ImportingContactTest_final: All Done
我想要的结果:
ContactList: 10
pageSize: 3
fragmentData_length: 3
offset: 3
Test Processes
fragmentData_length: 3
offset: 6
Test Processes
fragmentData_length: 3
offset: 9
Test Processes
fragmentData_length: 1
ImportingContactTest_final: All Done
【问题讨论】:
标签: node.js typescript recursion callback