我正在和Angular合作.我有一个名为UserService的服务,用于处理登录,身份验证和用户数据请求.
该GET方法需要检查用户是否有一个有效的(未过期)认证使得之前令牌get请求.因此,如果有,则发出请求,如果没有,请求令牌然后发出请求.
此get方法需要隐藏其复杂请求.它必须只返回一个Promise,因为它只发出一个请求.
所以,一个用法的例子:
UserService
.get()
.then(data => { ... })
.catch(error => { ... })
Run Code Online (Sandbox Code Playgroud)
检查令牌是否已过期.如果是,则返回刷新令牌的请求,然后生成并返回get请求.如果不是,只需创建并返回get请求.如下:
function get() {
if (isTokenExpired(token))
return $http
.post(url + '/refreshtoken', 'token=' + refreshToken)
.then(response => {
token = response.data.token
return $http.get(url + '?token=' + token)
})
.catch(response => { ... })
else
return $http.get(url + '?token=' + token)
}
Run Code Online (Sandbox Code Playgroud)
但它正在回复我将要处理的承诺:
UserService
.get()
.then(request => {
request // THAT …Run Code Online (Sandbox Code Playgroud) 使用base64编码上传(只上传)图片到服务器有问题吗?考虑到大约 1-2 MB 的常见图像大小,而不是图标大小的图像。这是一种不好的做法吗?它应该总是使用表单数据来上传图片吗?
图像将在 POST 正文(JSON 内容类型)中与其他数据一起发送,例如:
// POST /signup
{
email: 'example@email.com',
password: 'example@email.com',
name: 'Example Name',
picture: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAA...',
}
Run Code Online (Sandbox Code Playgroud)
一旦进入服务器,它将被发送到 AWS 存储桶并作为二进制文件提供,而不是 base64 编码的字符串。
Ilutration:
"----"表示布局区域
"...."表示另一个布局区域
<-------------------->
<----<TextView_1>---->
<-------------------->
<-<..<TextView_a...>->
<-<... ...>->
<-<... ...>->
<-<... >...>->
<-<................>->
<-<................>->
<-<................>->
<-<..*layout_end*..>->
<-------------------->
<----<TextView_2----->
<----- >----->
<-------------------->
Run Code Online (Sandbox Code Playgroud)
的内容"......"布局只是TextView_a,是不是足够大,以填补直到*layout_end*.
如果我在"...."布局中放置match_parent,则不会显示TextView_2.像这样:
<-------------------->
<----<TextView_1>---->
<-------------------->
<-<..<TextView_a...>->
<-<... ...>->
<-<... ...>->
<-<... />...>->
<-<................>->
<-<................>->
<-<................>->
<-<................>->
<-<................>->
<-<................>->
<-<................>->
<-<..*layout_end*..>->
Run Code Online (Sandbox Code Playgroud)
我需要"...."布局填充空间,但为TextView_2留出一个空间.我能做些什么才能获得高效率?结果:
<-------------------->
<----<TextView_1>---->
<-------------------->
<-<..<TextView_a...>->
<-<... ...>->
<-<... ...>->
<-<... >...>->
<-<................>->
<-<................>->
<-<................>->
<-<..*layout_end*..>->
<-------------------->
<----<TextView_2----->
<----- >----->
<--------------------> …Run Code Online (Sandbox Code Playgroud) 有一个SettingsActivity带有大约10个文本字段和3个按钮的设置屏幕()。文本字段在onClick打开对话框以插入/编辑文本时,其内容保存在中SharedPreferences。这些按钮执行异步请求以检索内容并将其保存在其他位置。在请求期间,将显示一个对话框以通知进度。
基本上,是SharedPreferences的包装,它具有10个getter和10 setter,每个字段一个。在上get[field_name],从上DataRepository获取值,SharedPreferences然后在上set[field_name]提交SharedPreferences。
甲ViewModel,其具有10度MutableLiveData的目的,一个用于每个字段。此类实现了LifecycleObserver有关SettingsActivity生命周期的信息,因此可以从上加载存储库中onCreate的字段并将字段保存到上的存储库中onDestroy。
还有3种方法来执行由上述3个按钮触发的3个异步请求。每个方法都接收一个OnRequestProgressListener实例,该实例将传递给发出异步请求的类,该类将用于将视图通知进度。
有10场的活动,即观察10 MutableLiveData从ViewModel。在onClick每个字段中,打开一个对话框以编辑/插入文本。在onPositiveButton对话框的上,将调用相应字段的观察者。
该活动OnRequestProgressListener根据异步请求的进度实现显示和隐藏对话框。
上述设计似乎不正确。我可以指出一些:
MutableLiveData在ViewModel;DataRepository;SharedPreferences。ViewModel接收听众传递给做,采用这些听众来通知视图异步请求的类。都ViewModel在中间。那是正确的解决方案吗?如果不是,我认为不是,应该如何设计正确的解决方案?
architecture android mvvm android-livedata android-architecture-components
我在flag.h中定义了一些常量,所以link.c和linkedlist.h可以使用它.但是当我编译时:
clang -Wall main.c link.c linkedlist.c
我得到以下内容
/tmp/linkedlist-o2mcAI.o:(.rodata+0x0):`的多个定义VARIABLE_NAME '
/tmp/link-oXhyfE.o:(.rodata+0x0):首先在这里定义
从所有变量flag.h中使用link.c和linkedlist.c,并在最后:
clang:错误:链接器命令失败,退出代码为1(使用-v查看调用)
main.c,flag.h,link.h,link.c,linkedlist.h和linkedlist.c的示例代码:
#include <stdio.h>
#include "linkedlist.h"
int main(void) {
LinkedList* list = LinkedList_new();
}
Run Code Online (Sandbox Code Playgroud)
#ifndef FLAG_H_
#define FLAG_H_
#include <limits.h>
#define FALSE 0
#define TRUE 1
const int OK = 1;
const int ERROR = -1;
const int FLAG = 0;
// other …Run Code Online (Sandbox Code Playgroud) 〜(P /\ Q) |- Q -> 〜P
我不知道从哪里开始。否定让我困惑。
我必须在 Isabelle(一个程序)中解决这个问题,但是如果有人解释如何使用自然演绎来解决这个问题,那将有足够的帮助。
android ×2
android-architecture-components ×1
angularjs ×1
architecture ×1
asynchronous ×1
backend ×1
base64 ×1
c ×1
header-files ×1
isabelle ×1
javascript ×1
layout ×1
linker ×1
logic ×1
mvvm ×1
rest ×1
upload ×1