gpt4 book ai didi

javascript - 我在这里的 Promise 拒绝做错了什么?

转载 作者:行者123 更新时间:2023-12-01 01:05:47 24 4
gpt4 key购买 nike

因此,我在这里为 Node 编写了一些可重用的代码,并通过 async/await 应用它。尽管我确信在使用此代码时我在这里误解了很多...但是,我发誓,我有一个项目正在使用这段代码,它可以工作,而另一个项目却不能。我正在使用 requestrequest-promise

UrlRequest: function( opts ) {
return new Promise( (resolve, reject) => {
request( opts,
function(error, request, body) {
if (error)
reject( {error: true, msg: error} );
else
resolve( {body, request} );
});
})
.catch(err => reject( {error: true, msg: err} ));
}

我相当确定 .catch() 是错误的。但在我的第一个项目中并没有出错。所以我试图找出正确的方法来做到这一点。我浏览过的几篇文章是我想出这个函数的用法的。我还知道如果实际发生任何错误(包括本例),它会抛出 UnhandledPromiseRejectionWarning 错误。那么如何正确处理呢?

我如何使用它:

(async () => {
var result = await Promise.UrlRequest( {
url: "...",
method: "GET",
headers: DefaultHeaders
} );

// do stuff with result...

}) ();

最佳答案

由于您已经安装了 request-promise,因此您不需要像现在一样构建 Promise。只需使用 it 而不是 request 即可返回一个 promise 。类似的东西应该可以工作:

const request = require('request-promise')

request(opts)
.then((res) => {
// Process res...
})
.catch((err) => {
// Handle error...
});

您可以继续将其包装在 UrlRequest 函数中,并与 async 一起使用,如下所示:

UrlRequest: async ( opts ) => {
try {
const response = await request(opts);
return response;
} catch (error) {
// Handle error
}
}

如果您想使用then()catch(),您可以这样做:

UrlRequest: ( opts ) => {
return request(opts)
.then(response => response)
.catch (error) {
// Handle error
}
}

关于javascript - 我在这里的 Promise 拒绝做错了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55662055/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com