嘿,所以我试图将一个Promise的结果存储在一个变量中,因为我有一些无法在Promise中运行的代码。
(我对node.js来说还很陌生,所以请稍加解释一下!)
我将如何使用异步等待?
这是我当前的代码:
const rbx = require("noblox.js")
var myblurb;
rbx.getBlurb(166962499).then(function (blurb) {
myblurb = blurb;
});
console.log(myblurb);
设置变量的函数将在函数完成后而不是在过程完成时被调用。因此,您的变量在调用后仍未定义,rbx.getBlurb
因为它返回的promise将在以后完成。
使用异步/等待:
一种获得想要的东西的方法是使用await
。这只能在声明为的函数中完成async
,这意味着该函数现在还将返回Promise。如果您对此表示满意,则可以这样做:
async function doStuff() {
var myblurb;
myblurb = await rbx.getBlurb(166962499);
console.log(myblurb);
}
这告诉您的函数停止并等待,直到调用的承诺getBlurb
已解决,然后将已解决的值分配给本地变量。
请注意,如果存在错误(诺言拒绝或抛出异常),则您的函数将传递该错误。您可以根据需要用try / catch包围所有内容。
然后在
如果您不想让函数返回一个Promise,则可以选择执行以下操作:
rbx.getBlurb(166962499).then(function (blurb) {
const myblurb = blurb;
console.log(myblurb);
// myblurb is only useful within this 'then' resolve function
});
这只是意味着您必须执行其余功能,这些功能依赖于的myblurb
resolve函数中的变量then
。
请注意,无论谁调用此代码,都需要了解它将是异步的,因此它应使用回调函数或Promise
将其结果返回给调用方(如果需要)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句