Promises 和 React Native 协助

卡仕达酱

我需要帮助理解 React Native 中的 promise 我老实说得到了基本的想法,但有人可以帮我更深入地解释一下。

我在 Mozilla 上查看了 Node promises Javascript promises,但我认为这是我做的方式的问题。

如果您确实提供帮助,请不要只是简单地给我答案,我想了解“为什么”

我有两种方法。“工人页面”

以及来自任何其他页面“其他页面”的呼叫

工人页面

var Server_Ip = 'http://0.0.0.0:0000/'
let fetching = false;


exports.POST = function (url, data) {
  if (fetching) return Promise.reject({D: 5});
  fetching = true;
  fetch(Server_Ip + url, {
    method: 'POST',
    headers: {
      Accept: 'application/json',
      'Content-Type': 'application/json',
    },
    body: JSON.stringify(data),
  })
    .then(response => Promise.all([response.json()]))
    .then(([response]) => {
      fetching = false;
      return response;
    })
    .catch(err => {
      console.log("error catch search:", err.message);
      fetching = false;
      // Choose one, depends what you need.
      return {D: 0}; 
      return Promise.reject(err); 
    })
 }

然后我从另一个页面打电话

Wkr.POST(string, data_send).then(response => {

                console.log('response');
                console.log(response);

                //9 - SIGN IN PASSWORD MATCHES
                if (response.D == 9) {
                    alert("YAY! GO THRU")
                }
                //8 - PASSWORDS DONT MATCH
                else if (response.D == 8) {
                    alert("SORRY!, THE PASSWORDS DONT MATCH")
                }
                //7 - NO SUCH USER
                else if (response.D == 7) {
                    alert("SORRY!, NO SUCH USER")
                }
                //6 - EMAIL IS NOT VALIDATED
                else if (response.D == 6) {
                    alert("SORRY!, EMAIL IS NOT VALIDATED")
                }
                //5 - YOU HAVE TRIED TO LOGIN
                else if (response.D == 5) {
                    alert("YOU HAVE TRIED TO LOGIN, PLEASE DONT SPAM")
                }
                //0 - ERROR
                else if (response.D == 0) {
                    alert("ERROR");
                } else {
                    alert("SHOULD NOT BEEN HERE");
                    console.log(response);
                }
            });

所以我故意弄乱了服务器的 IP 来模拟一个可能的问题,它没有做太多,但是当我发送垃圾邮件时它会返回

[16:39:21] Possible Unhandled Promise Rejection (id: 0):
[16:39:21] Object {
[16:39:21]   "D": 5,
[16:39:21] }
[16:39:21]

据我所知,正在处理的内容应该点击 if 语句“5”

特里科特

原因是then您其他页面中回调不处理拒绝,即您使用Promise.reject. 要处理这种拒绝,您应该.catch在另一个页面中链接一个回调:

.then(response => { // This is called when the promise was fulfilled
     ......
}).catch(reason => { // This is called when the promise was rejected
    if (reason.D == 5) {
        alert("YOU HAVE TRIED TO LOGIN, PLEASE DONT SPAM")
    }
    .....
});

另一件事:在工作页面中,您的函数不会返回承诺(拒绝情况除外)。您需要返回返回的内容fetch

return fetch(Server_Ip + url, {
^^^^^^^

在工作页面中,您还有一些未完成的代码:

  // Choose one, depends what you need.
  return {D: 0}; 
  return Promise.reject(err); 

...你需要选择。你不能两者兼得。您选择哪一个将决定这种情况将在上述哪个处理程序(thencatch处理程序)中结束。另请注意,这return Promise.reject(err)与仅throw err(在then/catch回调或承诺构造函数回调的上下文中)没有太大区别

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

python键码和configparser协助

来自分类Dev

协助PHP和MySQL中的搜索功能

来自分类Dev

需要协助计算偶数和奇数整数

来自分类Dev

React Native和require('http')

来自分类Dev

React Native和Parse.FacebookUtils

来自分类Dev

React Native-NavigatorIOS和TabBarIOS实现

来自分类Dev

React Native Promises令人困惑的Swift类型注释

来自分类Dev

在React Native中循环Json和显示

来自分类Dev

React Native和{flex:1}

来自分类Dev

React Native和Firebase 3

来自分类Dev

结合React和React-Native

来自分类Dev

使用React Native搜索和过滤

来自分类Dev

处理Promises React Native的多个响应

来自分类Dev

协助区分URL和Tableview数据

来自分类Dev

区别React Typescript,React JavaScript和React Native?

来自分类Dev

React Native中的Jest和异步存储

来自分类Dev

协助进行SELECT和COUNT

来自分类Dev

React Native:标签和堆栈导航集成

来自分类Dev

在React Native中隐藏和显示组件

来自分类Dev

React Native和ContextApi的打字稿错误

来自分类Dev

React Native Drawer和Tab Navigator

来自分类Dev

React Native-NavigatorIOS和TabBarIOS实现

来自分类Dev

居家/外出协助和Nest API

来自分类Dev

android native和react native之间的通信

来自分类Dev

流星和React Native

来自分类Dev

react-native:如何结合 react-native-router-flux 和 react-native-drawer?

来自分类Dev

在 React 和 React Native 中使用模型

来自分类Dev

React Native - android 和 iOS?

来自分类Dev

Flex 和布局 (React Native)