不能返回多个参数,只能返回一个对象(有些资料对这个的解释是Callback是以参数的形式返回结果,但是并不准确,参考JS官方文档以及javascript - How do you properly return multiple values from a Promise? - Stack Overflow等内容,所谓的参数应该是一个参数,或者说是参数就是对象)
Code(JS)
// 定义一个异步的除法函数,接受两个数字和两个回调函数作为参数
function divisionAPI(number, divider, successCallback, errorCallback)
{if (divider == 0) {return errorCallback(new Error("Division by zero"));}successCallback(number / divider);
}// 调用异步的除法函数,传入两个数字和两个回调函数
divisionAPI(10, 2, function(result) {// 成功的回调函数,打印结果console.log("The result is " + result);
}, function(error) {// 失败的回调函数,打印错误console.error("Something went wrong: " + error.message);
});
违背异步非阻塞I/O的原则,因为需要等待异步操作的完成(当从pending变到fulfilled或者rejected时,这个过程是不可逆的,使用await关键字在async函数中,等待一个Promise对象,实际过程就是再那个时间段代码调用到异步操作,此时async不执行,有点类似于同步操作,或者说我们一开始学习编程时最简单的函数调用,详见asynchronous - Why use promise or async/await on child processes in Node.js? - Stack Overflow 和 How to use promises - Learn web development | MDN (mozilla.org))。
也是只能返回一个对象。
Code(JS)
// 定义一个异步的除法函数,返回一个Promise对象
function divisionAPI(number, divider) {return new Promise(function(resolve, reject) {if (divider == 0) {return reject(new Error("Division by zero"));}resolve(number / divider);});
}// 调用异步的除法函数,返回一个Promise对象
divisionAPI(10, 2).then(function(result) {// 成功的回调函数,打印结果console.log("The result is " + result);}).catch(function(error) {// 失败的回调函数,打印错误console.error("Something went wrong: " + error.message);});
参考资料
黄同学写这篇blog的一些参考资料,有需要的可以看看。
OpenHarmony 源码解析之NAPI框架内部实现分析-51CTO.COM
[三方库移植之NAPI开发1]—Hello OpenHarmony NAPI - 知乎 (zhihu.com)
ace_napi: Development framework for extending the JS Native Module | 原生模块扩展开发框架 (gitee.com)