草庐IT

javascript - Q.nfcall 和 Q.fcall 有什么区别?

我是node.js的新手。我想了解Q.nfcall。我有以下Node.js代码。functionmytest(){console.log('Inmytest');return'aaa';}Q.nfcall(mytest).then(function(value){console.log(value);});我的预期输出应该是:Inmytestaaa但实际输出是:Inmytest我在上面的代码中将Q.nfcall更改为Q.fcall后,输出变成了我预期的结果:Inmytestaaa这是为什么呢?Q.nfcall和Q.fcall有什么区别?谢谢。 最佳答案

聊聊 .NET9 FCall/QCall 调用约定

前言FCall/Qcall是托管与非托管之间的调用约定,双方需要一个契约,以弥合彼此的互相/单向调用。非托管调用约定先了解下非托管约定,一般有四种,分别为thiscall,stdcall ,cdecl,fastcall thiscall:用特定的寄存器传递当前类指针this,由编译器决定哪个寄存器传递this。自身清理堆栈,从右往左传递参数。stdcall:一般用于win32API函数的传递方式,自身清理堆栈,从右往左一次传参。cdecl:一般用于微软古老的MFC框架的类的函数传递方式,调用者清理堆栈,从右往左依次传参。fastcall:用于快速调用方式,规定前几个参数用寄存器传递,多余的参数