据我所知,异步函数总是返回一个允诺,当函数返回时,该允诺会进行解析,或者在抛出错误时拒绝该允诺。
如果一个异步函数自己返回一个承诺,会发生什么?在调用下面的download()函数时,应该如何处理这一点呢?
const download = async () => {
const res = await axios({
"...",
method: 'GET',
responseType: 'stream'
});
const writer = fs.createWriteStream(absoluteArchivePath);
res.data.pipe(writer);
return new Promise((resolve, reject) => {
writer.on('finish', () => resolve());
writer.on('error', () => reject());
})
}
https://developer.mozilla.org/en-us/docs/web/javascript/reference/global_objects/promise
Promise对象表示异步操作的最终完成(或失败)及其结果值。
const myAsyncFunction = error => {
return new Promise((resolve, reject) => {
if (error) {
reject('an error occured');
} else {
resolve('OK');
}
});
};
myAsyncFunction(true)
.then(r => {
console.log('ok');
})
.catch(err => {
console.log('error');
});
// log: error
myAsyncFunction(false)
.then(r => {
console.log('ok');
})
.catch(err => {
console.log('error');
});
// log: ok
问题内容: 就速度和内存效率而言,在函数内部导入Python模块和/或函数有什么优缺点? 它是否在每次运行该功能时重新导入,或者是否仅在运行一开始就重新导入一次? 问题答案: 每次运行该功能时都会重新导入吗? 没有; 确切地说,Python模块在每次导入时都会被缓存,因此导入第二(或第三或第四…)次实际上并不会迫使它们再次经历整个导入过程。1个 是否在开始时导入一次功能是否运行? 不可以,只有在执
我试图了解异步/等待如何与promise一起工作。 据我所知,await应该是阻塞的,在上面的代码中,它似乎阻塞了返回带有原语
问题内容: 我的代码: 当我尝试运行这样的东西时: 我越来越: 但为什么? 我的主要目标是将令牌(从令牌中返回承诺)转换为变量。然后才执行一些操作。 问题答案: 只要其结果尚未解决,promise将始终记录未决。无论promise状态如何(已解决或仍处于待处理状态),您都必须调用promise来捕获结果: 这是为什么? 承诺只是向前的方向;您只能解决一次。a的解析值传递给其或方法。 根据Promi
根据锈迹参考, 如果存在函数(snip),其返回类型必须是以下类型之一: >
我对反应性API比较陌生,很好奇当我们从web控制器返回流量时,幕后发生了什么。 根据spring-web文档 反应性返回值的处理如下: 与使用DeferreDreSult类似,适用于单值promise。例子包括单(反应器)或单(RxJava)。 因此,例外是两个API的行为应该与多值流(Flux)的行为应该与返回deferredresult的行为相似。 但是在返回延迟结果的API中,整个列表在浏
我有这个异步函数,并试图返回一个对象或null。 但是我在定义类型时出错了。 如何定义这种数据类型? 类型“ContactId | null”不可分配给类型“string | null” 类型“ContactId”不能分配给类型“string”。
我正在使用编写promise代码。然后现在,我决定使用wait/async编写它。我在promise中调用了一个函数add_,然后在中调用了另一个函数。然后是该函数的一部分。这是我使用的代码。然后 这是使用wait/async的代码。 使用await/async的代码显示了一个错误,即add\u lessons是意外标识符。那么,告诉我如何在promise中定义异步函数?
更新 我已经读了十几篇关于这个话题的文章,但没有一篇涉及到这个基本问题。我将在本文末尾列出一个参考资料部分。 原始帖子 我对函数的理解是,它返回一个promise。 MDN文档:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function 在我的程序中,我可以编写如下内容: 我